A November 4 static review of langchain4j-aideepin version 3.31.0 found three CharacterMessageController reference endpoints that loaded associated knowledge embeddings, long-term memory content and graph edges from a client-supplied message UUID. The SQL mapper queries matched the UUID without binding the authenticated principal or message owner. A…
Inspect the ClaimsCase · DiggingBeagle record
A langchain4j-aideepin chat endpoint returned another user's agent memory by conversation ID
An authenticated client could supply an unrelated conversation identifier and retrieve that conversation's knowledge or memory graph without the corresponding owner check.
Public disclosure: Nov 4, 2026
Deployments of the specific langchain4j-aideepin application with the documented conversation memory endpoint and shared lookup behavior; not the general LangChain4j library.
Assessment profile
Assessment method- Setting
- research demonstration
- Exploitation
- demonstrated
- Evidence
- Grade B
- AI role
- AGAINST AI
Basis and provenance
Desk assessment of cited firsthand report and scope limits; quantitative denominators describe only the reporter's stated sample. No independent live exploitation or universal impact is inferred.
Assessed Nov 11, 2026 using diggingbeagle.assessment/1.
Evidence basis: CLM-R236-LANGCHAIN4J-AIDEEPIN-MEMORY-IDOR-01 · CLM-R236-LANGCHAIN4J-AIDEEPIN-MEMORY-IDOR-02 · langchain4j-aideepin issue 118: cross-user conversation and memory access
At a glance
Long-lived agent memory becomes a data repository. Every retrieval must enforce owner or team identity before placing sensitive content into model context or returning it to a user.
Read the implicationsThe published issue is a static source review, not a demonstrated authenticated two-account exploit or evidence of production data theft. The first fixed packaged release and deployment uptake were not confirmed by the source fix commit; downstream installations must verify their build.
Limits and uncertaintyFull account
A November 4 static review of langchain4j-aideepin version 3.31.0 found three CharacterMessageController reference endpoints that loaded associated knowledge embeddings, long-term memory content and graph edges from a client-supplied message UUID. The SQL mapper queries matched the UUID without binding the authenticated principal or message owner. A legitimate user who obtained another user's message UUID could therefore potentially retrieve private AI-associated content using the application's backend authority. The original reporter explicitly did not execute requests against an affected deployment, so a completed cross-account read must not be reported as demonstrated. The possible leak requires an authenticated caller and knowledge of another user's otherwise nonsequential UUID; guessing an identifier is not itself evidence of exploitation.
The defect concerns the aideepin application, not a demonstrated vulnerability in the upstream LangChain4j framework. Sibling code already performed owner checks on deletion and other paths, indicating that message-reference endpoints needed the same enforcement. On November 9 the repository maintainer referenced source fix 483499b and closed issue #118. That establishes a code correction but does not independently identify the first safe distributed build or confirm that historical installations applied it.
Remediation requires caller ownership checking before reference reads, or an owner predicate throughout SQL joins, including knowledge, memory and graph paths. Confirm that authorized users retain their access, a second account cannot retrieve their message data, and the installed build actually includes the referenced fix. No real production customer exfiltration or exploited tenant is documented.
Mechanism and trust boundary
- 01
Obtain another conversation identifier
An authenticated user learns a valid UUID belonging to a different account.
Boundary: caller identity / client-supplied ID
- 02
Look up records without owner predicate
Backend memory or knowledge lookup uses the UUID alone.
Boundary: application API / shared persistence
- 03
Receive another principal's context
Private agent conversation and derived knowledge are returned to the wrong caller.
Boundary: memory store / user response
Claims & evidence
CLM-CP238-AIDEEPIN-SOURCE-FIX-NOV09On November 9 the langchain4j-aideepin maintainer linked a source fix in commit 483499b and closed issue #118; the issue does not establish a first fixed packaged release.supported
Basis: reported finding
- supportslangchain4j-aideepin issue 118: cross-user conversation and memory accessprimary disclosure
Issue #118 Activity: maintainer acknowledgement and issue closure November 9, 2026, referencing fix commit 483499b
CLM-R236-LANGCHAIN4J-AIDEEPIN-MEMORY-IDOR-01Issue #118 identifies three langchain4j-aideepin message-reference endpoints selecting another account’s knowledge, memory and graph records by supplied message UUID without an owner check in version 3.31.0. This is a static source finding; the reporter did not run cross-account requests.supported
Basis: reported finding
- supportslangchain4j-aideepin issue 118: cross-user conversation and memory accessprimary disclosure
Issue #118 Description and Verification: three CharacterMessageController ref endpoints and mappers selecting b.uuid without user_id, static review at tag v3.31.0; no live requests executed
CLM-R236-LANGCHAIN4J-AIDEEPIN-MEMORY-IDOR-02No in-the-wild victims or verified patched release are recorded in the reviewed issue.supported
Basis: reported finding
- supportslangchain4j-aideepin issue 118: cross-user conversation and memory accessprimary disclosure
Issue #118: Status and limitations
Implications
Long-lived agent memory becomes a data repository. Every retrieval must enforce owner or team identity before placing sensitive content into model context or returning it to a user.
Controls and mitigations
- Look up conversations by authenticated principal plus record ID and enforce the same authorization on linked memory, graph, attachments and exports.
- Use two principals in regression tests, including leaked valid UUIDs, to verify every agent-memory read path.
- Keep any service-account database credential separate from the user's effective access scope.
- Use paired-account regression fixtures: each memory, graph and export query must fail with a valid foreign conversation ID even when that ID has leaked.
Unknowns and contradictions
- The published issue is a static source review, not a demonstrated authenticated two-account exploit or evidence of production data theft.
- The first fixed packaged release and deployment uptake were not confirmed by the source fix commit; downstream installations must verify their build.
Sources and citation
Material revision history
- Nov 11, 2026 · Published version · first publication · revision 239