{"id":"CVE-2026-49405","kind":"vulnerability","aliases":["CVE-2026-49405"],"related":[],"title":"OpenHuman agent harness leaks streamed responses and tool output to web pages","description":"OpenHuman is an open-source agent harness available as a desktop application and Rust library. Before 0.56.0, the local server exposes the server-sent events endpoint at /events without bearer authentication, permits cross-origin browser access, and uses only a caller-supplied client_id to select WebChannelEvent objects from the process-wide event bus. An unauthenticated local client, or an attacker-hosted web page opened by the victim, can subscribe to another client's stream by supplying a known or guessed identifier; the fixed system identifier makes the proactive-message stream predictable. The exposed events can include complete assistant responses, streamed message content, tool names, tool arguments, and raw tool outputs intended for the local user interface. This issue is fixed in version 0.56.0.","summary":"OpenHuman's local server exposes an event stream at /events without authentication and allows cross-origin browser access. A local client or a malicious web page the victim opens can subscribe to another client's stream and read assistant responses, tool arguments and raw tool outputs.","severity":"medium","cvss":6.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ai-agents","ai-tooling","desktop","openhuman","rust"],"not_affected_if":["local-server-disabled","version-0.56.0-or-later"],"how_to_check":"- Check the OpenHuman version installed on the machine, such as via the desktop app's about screen; affected versions are before `0.56.0`.\n- Look for a local server listening on the machine while OpenHuman runs, and whether it serves `/events`.","fix":"- OpenHuman: move to `0.56.0` or later.","status":"open","published_at":"2026-11-05T17:18:18+00:00","first_seen_at":"2026-11-05T17:40:04+00:00","triaged_at":"2026-11-05T17:42:33+00:00","updated_at":"2026-11-05T17:42:33+00:00","category":"ai-tooling","confidence":0.7,"triage":{"at":"2026-11-05T17:42:33Z","model":"claude-haiku-5-5","output":{"fix":"- OpenHuman: move to `0.56.0` or later.","reach":"local","title":"OpenHuman agent harness leaks streamed responses and tool output to web pages","impact":"medium","summary":"OpenHuman's local server exposes an event stream at /events without authentication and allows cross-origin browser access. A local client or a malicious web page the victim opens can subscribe to another client's stream and read assistant responses, tool arguments and raw tool outputs.","audience":"developers","category":"ai-tooling","nicknames":[],"who_cares":["openhuman","ai-agents","desktop","rust"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"Attacker reads assistant responses and raw tool outputs from another client's stream.","analyst_note":"","how_to_check":"- Check the OpenHuman version installed on the machine, such as via the desktop app's about screen; affected versions are before `0.56.0`.\n- Look for a local server listening on the machine while OpenHuman runs, and whether it serves `/events`.","plain_action":"","needs_analyst":false,"not_affected_if":["version-0.56.0-or-later","local-server-disabled"],"who_is_affected":"Anyone running the OpenHuman desktop application or Rust library before 0.56.0 with its local server active. The exposure is through the local server's event endpoint, so a team running OpenHuman on shared machines or as a library in a service should look first; installs that do not run the local server are less exposed.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000716,"input_tokens":4407,"output_tokens":551,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-49405':15A,18A '/events':37B,104C '0.56.0':92C,205C 'access':46B,113C 'agent':2A,21B,81C 'ai':20B,23B 'ai-ag':19B 'ai-tool':22B 'allow':41B 'anoth':61B,152C 'applic':87C 'argument':70B,188C 'assist':67B,180C 'attack':141C 'attacker-host':140C 'authent':39B,107C 'avail':83C 'bearer':106C 'browser':45B,112C 'bus':133C 'caller':119C 'caller-suppli':118C 'client':49B,62B,121C,137C,153C 'complet':179C 'content':184C 'cross':43B,110C 'cross-origin':42B,109C 'cve':13A,16A 'desktop':25B,86C 'endpoint':102C 'event':34B,101C,132C,176C 'expos':32B,96C,175C 'fix':164C,202C 'guess':161C 'har':3A,82C 'host':142C 'id':122C 'identifi':162C,166C 'includ':178C 'intend':193C 'interfac':198C 'issu':200C 'known':159C 'leak':4A 'librari':90C 'local':30B,48B,94C,136C,196C 'make':167C 'malici':52B 'messag':171C,183C 'name':186C 'object':126C 'open':57B,79C,145C 'open-sourc':78C 'openhuman':1A,26B,28B,75C 'origin':44B,111C 'output':9A,74B,192C 'page':12A,54B,144C 'permit':108C 'predict':173C 'proactiv':170C 'proactive-messag':169C 'process':130C 'process-wid':129C 'raw':72B,190C 'read':66B 'respons':6A,68B,181C 'rust':27B,89C 'select':124C 'sent':100C 'server':31B,95C,99C 'server-s':98C 'sourc':80C 'stream':5A,35B,64B,155C,172C,182C 'subscrib':59B,150C 'suppli':120C,157C 'system':165C 'tool':8A,24B,69B,73B,185C,187C,191C 'unauthent':135C 'use':115C 'user':197C 'version':204C 'victim':56B,148C 'web':11A,53B,143C 'webchannelev':125C 'wide':131C 'without':38B,105C","nicknames":[],"mitigations":[],"who_affected":"Anyone running the OpenHuman desktop application or Rust library before 0.56.0 with its local server active. The exposure is through the local server's event endpoint, so a team running OpenHuman on shared machines or as a library in a service should look first; installs that do not run the local server are less exposed.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["aiagents","aitooling","desktop","medium","openhuman","rust"],"campaign_type":null,"first_public_at":"2026-10-09T17:35:45+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-49405","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-49405","severity":null,"published_at":"2026-11-05T17:18:18+00:00","modified_at":"2026-11-05T17:18:18+00:00","first_seen_at":"2026-11-05T17:40:04+00:00","fetched_at":"2026-11-05T17:40:04+00:00","note":null}],"documents":[{"id":43893,"url":"https://github.com/tinyhumansai/openhuman/commit/b1bbc53fceed7d1f0cff90cbb0a42f4ab8e153a1","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":43894,"url":"https://github.com/tinyhumansai/openhuman/releases/tag/v0.56.0","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":78098,"url":"https://github.com/tinyhumansai/openhuman/security/advisories/GHSA-4c8x-994p-6x9v","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-09T17:35:45+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}