{
 "public_id": "AIR-2026-0102",
 "incident_id": "2026-05-langchain-core-load-allowlist-deserialization",
 "date_disclosed": "2026-05-05",
 "date_occurred": null,
 "title": "CVE-2026-44843: LangChain core load() allowlists let attacker-controlled data instantiate trusted classes",
 "class": "responsible_disclosure",
 "attack_surface": "agent_framework",
 "initial_vector": "attacker_controlled_structured_input_in_chat_history_or_run_io",
 "agent_capability_abused": [
  "message_history_deserialization",
  "streaming_event_replay"
 ],
 "target_product": "langchain-core",
 "target_vendor": "LangChain Inc.",
 "autonomy_level": "semi_autonomous",
 "impact_realized": false,
 "impact_type": [
  "object_injection",
  "credential_disclosure",
  "prompt_injection"
 ],
 "blast_radius": "langchain-core <= 0.3.84 and >= 1.0.0 <= 1.3.2 in apps using RunnableWithMessageHistory, astream_log() or astream_events(version=\"v1\")",
 "cve": [
  "CVE-2026-44843"
 ],
 "taxonomy": {
  "owasp_asi": [
   "ASI05",
   "ASI03"
  ],
  "mitre_atlas": [],
  "labels": [
   "unsafe_deserialization",
   "overly_broad_allowlist",
   "agent_memory",
   "chat_history_poisoning"
  ]
 },
 "defense_present": "an object allowlist intended to restrict deserialization to trusted LangChain classes",
 "defense_bypassed": true,
 "fix_shipped": "langchain-core 1.3.3 and 0.3.85",
 "primary_sources": [
  "https://github.com/advisories/GHSA-pjwx-r37v-7724"
 ],
 "verified_quote": "attacker-supplied LangChain serialized constructor dictionaries may cause trusted runtime paths to instantiate classes with untrusted constructor arguments.",
 "confidence": "high",
 "notes": "GHSA-pjwx-r37v-7724, CVSS 8.2 High. The allowlist was scoped to class names but not to constructor arguments. Consequences listed by LangChain: chat-history poisoning, prompt injection, credential disclosure, and instantiation of unexpected objects.",
 "risk_category": "privacy",
 "risk_secondary": [],
 "risk_subcategory": "Unclassified",
 "risk_sub_secondary": [],
 "ai_entity": "generative",
 "agency": "ai_as_target",
 "agency_debatable": false,
 "agency_reason": "an allowlist that constrains class names but not constructor arguments",
 "vector_family": "other",
 "vector_detail": "attacker_controlled_structured_input_in_chat_history_or_run_io",
 "guardrail_kind": [
  "permission_scope"
 ],
 "guardrail_outcome": "silent",
 "xrefs": {
  "aiid": [],
  "atlas": [],
  "cve": [
   "CVE-2026-44843"
  ],
  "ghsa": []
 },
 "primary_asi": "ASI05",
 "agent_framework": "langchain",
 "model_provider": "unknown",
 "model_name": "",
 "detection_mechanism": "unknown",
 "tool_access": "unknown",
 "financial_loss_band": "unknown",
 "eai_category": "credential_theft",
 "eai_domain": "access_control_and_permissions",
 "eai_secondary": [],
 "eai_reason": "impact rule: credential_theft",
 "asi_curated": [],
 "asi_scope": "in_scope",
 "asi_provenance": "rule",
 "asi_reason": "ASI05 (vector=code_exec); ASI03 (eai_category=credential_theft)",
 "submitted_by": "EAI Internal"
}