Skip to content

Security Issues #14

@mismosmi

Description

@mismosmi

Critical (P0)

Server binds to 0.0.0.0 (src/server/mod.rs:155) — The MCP server listens on all network interfaces, exposing the /run_command endpoint (which executes arbitrary shell commands) to anyone on the local network. Should bind to 127.0.0.1. This is a one-line fix.

AppleScript injection (src/server/commands.rs:59-63) — On macOS, command strings are interpolated into AppleScript with only " escaping. Crafted commands can break out and execute code via do shell script before the user approves anything.

High (P1)

Non-constant-time API key comparison (rest.rs:97, daemons.rs:146) — Uses != instead of constant-time comparison. Combined with #1, this enables remote timing attacks.

State files lack explicit permissions (lifecycle.rs:38-44) — API keys in ~/.ai-pod/*.json inherit the process umask, potentially world-readable on systems with umask 0022.

curl | bash installation (container.rs:24) — Claude Code installed via pipe-to-shell without integrity verification.

Medium (P2)

bypassPermissions in container — Claude runs with full permissions inside the container, which has the workspace mounted read-write.
Unpinned Docker images — FROM ubuntu:latest is non-reproducible and vulnerable to supply chain attacks.
No rate limiting on any server endpoint.
Server log created without restricted permissions.

Low (P3)

10-14. Binary download integrity, incomplete pipe rejection, daemon approval flow gaps, PID reuse TOCTOU.

The full analysis with code references and fix suggestions is in SECURITY_AUDIT.md, pushed to the branch.
1 step

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions