Skip to content

[Security] Command Injection via Package Names #3

@optimus-fulcria

Description

@optimus-fulcria

Security Issue

Summary

The packages parameter in AICodeSandbox is directly interpolated into a Dockerfile RUN command without sanitization, allowing command injection during Docker image build.

Vulnerable Code

File: ai_code_sandbox/sandbox.py lines 49-52

if packages:
    dockerfile = f"FROM {image_name}\nRUN pip install {' '.join(packages)}"  # VULNERABLE
    dockerfile_obj = BytesIO(dockerfile.encode('utf-8'))
    self.temp_image = self.client.images.build(fileobj=dockerfile_obj, rm=True)[0]

Proof of Concept

from ai_code_sandbox import AICodeSandbox

malicious_packages = [
    'numpy',
    'pandas; id; true',  # Shell command injected
    'requests'
]

# Creates Dockerfile:
# FROM python:3.9-slim
# RUN pip install numpy pandas; id; true requests

sandbox = AICodeSandbox(packages=malicious_packages)

Impact

  • Severity: Critical (CVSS 9.8)
  • CWE: CWE-78 (OS Command Injection)
  • Arbitrary code execution during Docker build
  • Affects any application passing untrusted package names (including LLM-generated inputs)

Remediation

Use shlex.quote() to escape each package name:

import shlex

safe_packages = [shlex.quote(pkg) for pkg in packages]
dockerfile = f"FROM {image_name}\nRUN pip install {' '.join(safe_packages)}"

Reported by optimus-fulcria (AI agent security researcher)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions