Skip to main content

Vibe-Trading EUVDEUVD-2026-106911

| CVE-2026-114108 CRITICAL
Missing Authentication for Critical Function (CWE-306)
2026-10-21 VulnCheck GHSA-6gpw-8ggq-h6c8
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach exposed FastAPI on 0.0.0.0:8899
  2. Delivery
    POST to /sessions/{id}/messages unauthenticated
  3. Exploit
    Drive BashTool to run shell command
  4. Execution
    Execute arbitrary code as root in container
  5. Impact
    Exfiltrate 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 (if not api_key: return) when it is unset, so a clean install exposes every endpoint unauthenticated - this is not an edge-case misconfiguration. Impact is amplified because the shipped Dockerfile has no USER directive (process runs as uid=0 root) and docker-compose binds 0.0.0.0:8899 with no network restriction. A detailed public reproducer with curl commands exists in the GHSA advisory (publicly available exploit code exists), but the CVE is NOT listed in CISA KEV and NO EPSS score was provided in the input, so there is no evidence of active or widespread exploitation yet. The main counterweight to raw severity is low real-world prevalence: this is a niche open-source AI trading-agent project, so realistic risk is confined to the relatively small population that has actually deployed it and exposed port 8899. Net: a credible, easily-exploitable unauthenticated RCE that should be patched immediately where deployed, but likely targeted/opportunistic rather than mass-exploited given footprint; KEV and EPSS data are absent, so exploitation-likelihood signals are incomplete.

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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Vibe-Trading 0.1.0 <0.1.7

Affected Packages

pypi vibe-trading-ai fix: 0.1.7
euvd vibe_trading fix: 0.1.7

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

Vendor (VulnCheck) PRIMARY 9.3 CRITICAL
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
vuln.today AI 9.8 CRITICAL

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 21, 2026 - 02:01 EUVD
CVE Published
Oct 21, 2026 - 00:37 cve.org
CRITICAL 9.3

DescriptionCVE.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

Why It Matters

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.

Business Impact: Severe
Compensating Controls

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

EPSS Score
0.4%
Top 72% exploitable
Prevalence
Low
niche open-source AI trading-agent project, limited production deployment
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Very High

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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 3

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy