{"id":"CVE-2026-121938","kind":"vulnerability","aliases":["CVE-2026-121938"],"related":[],"title":"langchain4j-aideepin: any logged-in user can read others' character chats","description":"langchain4j-aideepin before 3.31.0 contains an insecure direct object reference vulnerability that allows authenticated users to read other users' character-chat conversations by supplying their character uuid. Attackers can request GET /character/{uuid}, which CharacterService.detail resolves without an ownership check, to obtain victims' questions, AI answers, and attachment and audio URLs.","summary":"langchain4j-aideepin before 3.31.0 has an insecure direct object reference: GET /character/{uuid} returns a character's data without checking that the requester owns it. An authenticated user who knows another user's character uuid can read that person's questions, AI answers, and attachment and audio URLs.","severity":"medium","cvss":6.0,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ai-tooling","java","langchain4j-aideepin","multi-user","self-hosted"],"not_affected_if":["single-user","version-3.31.0-or-later"],"how_to_check":"- Check the langchain4j-aideepin version in use; affected builds are those before `3.31.0`.\n- Look for the `CharacterService.detail` lookup behind `GET /character/{uuid}` and confirm whether it verifies the caller owns the character.","fix":"- langchain4j-aideepin: move to `3.31.0` or later.","status":"open","published_at":"2026-11-04T13:17:28+00:00","first_seen_at":"2026-11-04T13:27:02+00:00","triaged_at":"2026-11-04T13:28:11+00:00","updated_at":"2026-11-04T13:28:11+00:00","category":"ai-tooling","confidence":0.7,"triage":{"at":"2026-11-04T13:28:11Z","model":"claude-haiku-5-5","output":{"fix":"- langchain4j-aideepin: move to `3.31.0` or later.","reach":"internet","title":"langchain4j-aideepin: any logged-in user can read others' character chats","impact":"medium","summary":"langchain4j-aideepin before 3.31.0 has an insecure direct object reference: GET /character/{uuid} returns a character's data without checking that the requester owns it. An authenticated user who knows another user's character uuid can read that person's questions, AI answers, and attachment and audio URLs.","audience":"businesses","category":"ai-tooling","nicknames":[],"who_cares":["langchain4j-aideepin","java","multi-user","self-hosted"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"authenticated user reads other users' chat history and attachments","analyst_note":"","how_to_check":"- Check the langchain4j-aideepin version in use; affected builds are those before `3.31.0`.\n- Look for the `CharacterService.detail` lookup behind `GET /character/{uuid}` and confirm whether it verifies the caller owns the character.","plain_action":"","needs_analyst":false,"not_affected_if":["version-3.31.0-or-later","single-user"],"who_is_affected":"Teams that run langchain4j-aideepin as a multi-user chat service with character features. Exposure requires a logged-in account; single-user or non-character deployments are less exposed. The sources do not say whether any public instance is reachable without authentication.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000694,"input_tokens":4186,"output_tokens":551,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-121938':16A,19A '-2026':15A,18A '/character':45B,115C '3.31.0':37B,86C 'ai':21B,75B,128C 'ai-tool':20B 'aideepin':3A,26B,35B,84C 'allow':95C 'anoth':64B 'answer':76B,129C 'attach':78B,131C 'attack':111C 'audio':80B,133C 'authent':60B,96C 'charact':12A,49B,67B,103C,109C 'character-chat':102C 'characterservice.detail':118C 'chat':13A,104C 'check':53B,123C 'contain':87C 'convers':105C 'cve':14A,17A 'data':51B 'direct':41B,90C 'get':44B,114C 'host':32B 'insecur':40B,89C 'java':23B 'know':63B 'langchain4j':2A,25B,34B,83C 'langchain4j-aideepin':1A,24B,33B,82C 'log':6A 'logged-in':5A 'multi':28B 'multi-us':27B 'object':42B,91C 'obtain':125C 'other':11A 'own':57B 'ownership':122C 'person':72B 'question':74B,127C 'read':10A,70B,99C 'refer':43B,92C 'request':56B,113C 'resolv':119C 'return':47B 'self':31B 'self-host':30B 'suppli':107C 'tool':22B 'url':81B,134C 'user':8A,29B,61B,65B,97C,101C 'uuid':46B,68B,110C,116C 'victim':126C 'vulner':93C 'without':52B,120C","nicknames":[],"mitigations":[],"who_affected":"Teams that run langchain4j-aideepin as a multi-user chat service with character features. Exposure requires a logged-in account; single-user or non-character deployments are less exposed. The sources do not say whether any public instance is reachable without authentication.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["aitooling","java","langchain4jaideepin","medium","multiuser","selfhosted"],"campaign_type":null,"first_public_at":"2026-11-04T13:17:28+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/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-121938","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-121938","severity":null,"published_at":"2026-11-04T13:17:28+00:00","modified_at":"2026-11-04T13:17:28+00:00","first_seen_at":"2026-11-04T13:27:02+00:00","fetched_at":"2026-11-04T13:27:02+00:00","note":null}],"documents":[{"id":67076,"url":"https://github.com/moyangzhan/langchain4j-aideepin/commit/9b2fee6b66836a0efd5599cfcddd05b80b05ca93","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":67077,"url":"https://www.vulncheck.com/advisories/langchain4j-aideepin-before-3.31.0-idor-via-get-character-uuid","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}