{"id":"CVE-2026-114108","kind":"vulnerability","aliases":["CVE-2026-114108"],"related":[],"title":"Vibe-Trading: missing auth lets anyone run shell commands on the server","description":"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.","summary":"Vibe-Trading versions 0.1.0 before 0.1.7 skip the API auth check when API_AUTH_KEY is unset, so anyone who can reach the FastAPI server can post session messages that trigger shell commands through BashTool. An attacker can also upload .py or .sh files, read session histories, and obtain partial API keys.","severity":"critical","cvss":9.8,"epss":0.00357,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ai-tooling","fastapi","python","self-hosted","vibe-trading"],"not_affected_if":["api-auth-key-set","version-0.1.7-or-later"],"how_to_check":"Check whether the environment sets API_AUTH_KEY for the Vibe-Trading service; if it is unset or empty, the API is open.\nCheck the installed version against 0.1.7.","fix":"Upgrade Vibe-Trading to 0.1.7 or later.\nSet API_AUTH_KEY to a strong secret and rotate any API keys that may have been exposed.","status":"open","published_at":"2026-10-21T01:17:36+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","triaged_at":"2026-10-23T22:33:27+00:00","updated_at":"2026-10-24T13:15:54+00:00","category":"ai-tooling","confidence":0.8,"triage":{"at":"2026-10-23T22:33:27Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade Vibe-Trading to 0.1.7 or later.\nSet API_AUTH_KEY to a strong secret and rotate any API keys that may have been exposed.","reach":"network","title":"Vibe-Trading: missing auth lets anyone run shell commands on the server","impact":"high","summary":"Vibe-Trading versions 0.1.0 before 0.1.7 skip the API auth check when API_AUTH_KEY is unset, so anyone who can reach the FastAPI server can post session messages that trigger shell commands through BashTool. An attacker can also upload .py or .sh files, read session histories, and obtain partial API keys.","category":"ai-tooling","who_cares":["vibe-trading","fastapi","python","self-hosted","ai-tooling"],"confidence":0.8,"needs_auth":"no","worst_case":"Attacker runs root shell commands on the server and reads API keys.","analyst_note":"Confirm the exact default for API_AUTH_KEY and whether the BashTool runs as root in the default container; check the NVD entry at https://nvd.nist.gov/vuln/detail/CVE-2026-114108 for the fixed version details.","how_to_check":"Check whether the environment sets API_AUTH_KEY for the Vibe-Trading service; if it is unset or empty, the API is open.\nCheck the installed version against 0.1.7.\nunknown","needs_analyst":true,"not_affected_if":["version-0.1.7-or-later","api-auth-key-set"],"user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"critical"},"cost_usd":0.000579,"input_tokens":2997,"output_tokens":558,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-114108':16A,19A '-2026':15A,18A '/messages':124C '/sessions':122C '/upload':138C '0.1.0':35B,89C '0.1.7':37B,91C 'access':102C 'ai':21B 'ai-tool':20B 'allow':98C 'also':70B 'anyon':7A,50B 'api':40B,44B,82B,112C,145C 'attack':68B,100C,117C 'auth':5A,41B,45B,108C,113C 'authent':95C 'bashtool':66B,131C 'check':42B 'command':10A,64B,129C 'contain':92C 'cve':14A,17A 'earli':110C 'fastapi':23B,55B,104C 'file':75B,136C 'histori':78B,141C 'hkud':84C 'host':27B 'id':123C 'key':46B,83B,114C,146C 'let':6A 'messag':60B,120C 'miss':4A,94C 'obtain':80B,143C 'partial':81B,144C 'post':58B,119C 'py':72B,133C 'python':24B 'reach':53B 'read':76B,139C 'requir':107C 'return':109C 'root':127C 'run':8A 'self':26B 'self-host':25B 'server':13A,56B 'session':59B,77B,140C 'sh':74B,135C 'shell':9A,63B,128C 'skip':38B 'surfac':105C 'tool':22B 'trade':3A,30B,33B,87C 'trigger':62B,126C 'unauthent':99C 'unset':48B,116C 'upload':71B,132C 'version':34B 'via':130C,137C 'vibe':2A,29B,32B,86C 'vibe-trad':1A,28B,31B,85C 'vulner':96C","nicknames":[],"mitigations":[],"who_affected":null,"tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T01:17:36+00:00","kev":null,"cvss_vector":"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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-114108","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-114108","severity":null,"published_at":"2026-10-21T01:17:36+00:00","modified_at":"2026-10-22T17:40:46+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","fetched_at":"2026-10-23T22:29:01+00:00","note":null},{"source":"epss","external_id":"CVE-2026-114108","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-114108","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T13:15:54+00:00","fetched_at":"2026-10-24T13:15:54+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}