Case · 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

Scope

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.

At a glance

Mechanism and trust boundary

  1. 01

    Obtain another conversation identifier

    An authenticated user learns a valid UUID belonging to a different account.

    Boundary: caller identity / client-supplied ID

  2. 02

    Look up records without owner predicate

    Backend memory or knowledge lookup uses the UUID alone.

    Boundary: application API / shared persistence

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

Link to claim
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

Link to claim
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

Link to claim

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

  1. Nov 11, 2026 · Published version · first publication · revision 239