SecOraLens
CriticalBreach

Vibe-Trading FastAPI endpoints permit unauthenticated access, file upload, and an RCE chain

GitHub Security Advisories·Source published ·1 min read

What happened?

Summary: 5 findings — unauthenticated full-API exposure (F1, lead Critical), read-side authorization gap that persists even with API_AUTH_KEY set (F2), unauthenticated file write of.py/.sh/.yaml to a server-returned path (F3), default-permissive CORS that combines with a loopback-only check to grant any browser page on whitelisted localhost ports credentialed cross-origin access (F-A4), and partial API-key disclosure via _mask_secret() (F-A5). --- Shared baseline (applies t

Key details

  • An unauthenticated attacker can create a session, send a message, and trigger the LLM agent to execute arbitrary shell commands as root via BashTool.
  • Read endpoints such as /sessions/{id}/messages and /runs lack authentication dependencies even when API_AUTH_KEY is set, exposing full session history including secrets.
  • The Dockerfile runs the FastAPI process as root (uid=0) with no USER directive, and docker-compose binds port 8899 to 0.0.0.0 without network restrictions.

Affected

  • vibe-trading-ai package versions >= 0.1.0, < 0.1.7 are affected.

Summarised by SecOraLens from GitHub Security Advisories. Always read the original source before acting. How SecOraLens verifies advisories.