Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed FastAPI on 0.0.0.0:8899
-
DeliveryPOST to /sessions/{id}/messages unauthenticated
-
ExploitDrive BashTool to run shell command
-
ExecutionExecute arbitrary code as root in container
-
ImpactExfiltrate API keys and session histories
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication required for critical functions
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitable against a default/clean install: agent/.env.example ships API_AUTH_KEY commented out and require_auth() returns None immediately when the key is unset, so every endpoint under Depends(require_auth) is unauthenticated unless the operator explicitly sets API_AUTH_KEY. The attacker needs network reachability to the FastAPI listener, which docker-compose exposes on 0.0.0.0:8899 with no network restriction. The container runs as root (no USER directive in the Dockerfile), so successful command execution via /sessions/{id}/messages → BashTool yields root. LIMITING FACTORS: the full chained RCE demonstration additionally requires a working LLM API key configured by the operator so the agent tool-call loop can complete (a normal functional setup step, not a security opt-in); the unauthenticated surface itself, /upload file write, history read, and partial key disclosure do not require the LLM key. Setting API_AUTH_KEY, restricting the 8899 bind, or upgrading to 0.1.7 removes exposure. |
| Impact | All available signals converge on genuine high priority. The input CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:N, VC/VI/VA:H, score 9.3) describes remote, low-complexity, unauthenticated exploitation with full confidentiality/integrity/availability impact, consistent with the GHSA Finding 1 CVSS v3.1 rating of 9.8. The decisive aggravator is configuration-by-default: agent/.env.example ships API_AUTH_KEY commented out, and require_auth() returns early ( |
| Exploit ScenarioDerived | An attacker who can reach the Vibe-Trading FastAPI service on 0.0.0.0:8899 (exposed by default via docker-compose) sends an unauthenticated POST to /sessions/{id}/messages, because require_auth() returns early when the default-unset API_AUTH_KEY leaves all endpoints open. The crafted message drives the agent's BashTool to run shell commands as root inside the container, and the attacker can also upload .py/.sh files via /upload, read session histories, and recover partial API keys. A step-by-step public reproducer with curl commands is published in the GHSA advisory, so no exploit development is required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
Missing authentication in the HKUDS Vibe-Trading FastAPI server (pip package vibe-trading-ai 0.1.0 through 0.1.6) lets unauthenticated remote attackers reach every endpoint guarded by Depends(require_auth), because require_auth() returns immediately when API_AUTH_KEY is unset - which is the shipped default in agent/.env.example. Attackers can POST to /sessions/{id}/messages to drive the agent's BashTool toward shell command execution, upload .py/.sh/.yaml files via /upload, read other users' session histories, and recover partial API keys via _mask_secret(); because the shipped Dockerfile has no USER directive and docker-compose publishes 0.0.0.0:8899, any command executed lands as root inside the container. Exploitation matches the assessed vector AV:N/AC:L/PR:N/UI:N with high confidentiality, integrity and availability impact; the full chained RCE demonstration additionally requires the operator to have configured a working LLM API key so the tool-call loop can complete, while the unauthenticated API surface, file upload, history read and partial key disclosure work without it. No CISA KEV listing and no public exploit code identified at time of analysis, though the vendor advisory publishes detailed reproduction steps; fix in 0.1.7.
RemediationAI
Vendor-released patch: 0.1.7 - upgrade with pip install --upgrade vibe-trading-ai==0.1.7 (or rebuild the container image from the 0.1.7 tag); the upstream fix is commit 9454d4a27a763b80e1d6eb5763b86c88e9e4e714, and details are in GHSA-v2f8-6655-7grj. If upgrading cannot be done immediately, set a strong random API_AUTH_KEY in agent/.env and restart - this closes the unauthenticated surface and the /sessions/{id}/messages RCE path, but note that the read-side authorization gap (F2) persists even with the key set, so this is only a stopgap. Also stop publishing the service broadly: change the docker-compose port mapping from 0.0.0.0:8899 to 127.0.0.1:8899 and front it with an authenticating reverse proxy - the trade-off is that remote clients then need proxy credentials or a VPN. Tighten the default-permissive CORS allowlist and remove the localhost-port exception (F-A4) to prevent browser-based cross-origin abuse, at the cost of breaking any legitimate local web UI integrations. Finally add a non-root USER directive to the Dockerfile so that any command execution via BashTool is no longer root - this reduces post-exploitation severity but does not fix the authentication bypass itself.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Vibe-Trading is an LLM-driven trading agent built on Python/FastAPI, packaged as pip/vibe-trading-ai (CPE cpe:2.3:a:hkuds:vibe-trading) and shipped as a Docker image with a docker-compose file that publishes port 8899 on 0.0.0.0 without network restriction. The root cause is CWE-306 (Missing Authentication for Critical Function): agent/api_server.py line 303 implements require_auth() as if not api_key: return, so when the API_AUTH_KEY environment variable is absent the dependency resolves to None and every route decorated with Depends(require_auth) becomes fully public. The distribution's agent/.env.example ships `
API_AUTH_KEY=` commented out, meaning a clean install is unauthenticated by default. Additional weaknesses compound the impact: the Dockerfile contains no USER directive so the FastAPI process runs as uid=0(root); /upload accepts .py, .sh and .yaml files written to a server-returned path; default-permissive CORS combined with a loopback-only check grants any page on whitelisted localhost ports credentialed cross-origin access (F-A4); a read-side authorization gap persists even after API_AUTH_KEY is set (F2); and _mask_secret() leaks partial API keys (F-A5). The critical chain is that the session message endpoint feeds user-controlled text into the agent loop, whose BashTool executes shell commands - so unauthenticated HTTP access translates into root command execution once the operator has supplied an LLM key to make the agent functional.
Know when Fastapi gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Default install leaves auth disabled so PR:N is honest; remote, low-complexity, no user interaction, with full root-level command execution giving C/I/A:H.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
HKUDS Vibe-Trading from 0.1.0 before 0.1.7 contains a missing authentication vulnerability that allows unauthenticated attackers to access the FastAPI surface because require_auth() returns early when API_AUTH_KEY is unset. Attackers can post messages to /sessions/{id}/messages to trigger root shell commands via BashTool, upload .py or .sh files via /upload, read session histories, and obtain partial API keys.
Technical POC Analysis
The vulnerable component is vibe-trading-ai's FastAPI application agent/apiserver.py.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Deployments of the vibe-trading-ai Python package (versions 0.1.0 through 0.1.6) ship with authentication effectively switched off, so anyone who can reach the service can act as a fully privileged user and, in typical container setups, execute commands as root. Because the default Docker configuration exposes the service on all network interfaces, any internet- or network-reachable instance represents an immediate risk of customer session data exposure and host compromise. Leadership should care because the affected systems may hold trading workflow data, uploaded files, and API credentials, and no vendor fix is yet available.
No vendor-released patch identified at time of analysis. Interim mitigations: set a strong non-default API_AUTH_KEY so require_auth no longer returns early; bind the service to loopback and block external access to port 8899 via firewall or security group rules; add a non-root USER to the Dockerfile and drop container privileges; disable or restrict the /upload endpoint and BashTool execution; rotate all secrets and API keys reachable from the container; and place an authenticating reverse proxy in front of the FastAPI server while monitoring logs for unauthorized session and message activity.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Related Vulnerabilities in Vibe-Trading Auth and Command Injection Flaws
View all 3n8n-workflows Main Commit ee25413 allows attackers to execute a directory traversal via the download_workflow function w
FastAPI is a web framework for building APIs with Python 3.6+ based on standard Python type hints. Rated high severity (
Missing authentication in the FastAPI backend of Forget-C Jellyfish AI Short Drama Studio (versions 0.1.0-alpha, 0.2.0,
EUVD-2026-106911
GHSA-6gpw-8ggq-h6c8
NVD
CVE.org
EPSS
Exploit-DB