Zero Day MonitorZDM
DashboardVulnerabilitiesTrendingZero-DaysNews
Login
ImpressumPrivacy Policy
Zero Day Monitor © 2026
2131 articles · 105943 vulns · 36/41 feeds (7d)
← Back to list
7.5
CVE-2026-34070EXPLOITEDPATCHED
null · langchain-core

LangChain Core has Path Traversal vulnerabilites in legacy `load_prompt` functions

Description

## Summary Multiple functions in `langchain_core.prompts.loading` read files from paths embedded in deserialized config dicts without validating against directory traversal or absolute path injection. When an application passes user-influenced prompt configurations to `load_prompt()` or `load_prompt_from_config()`, an attacker can read arbitrary files on the host filesystem, constrained only by file-extension checks (`.txt` for templates, `.json`/`.yaml` for examples). **Note:** The affected functions (`load_prompt`, `load_prompt_from_config`, and the `.save()` method on prompt classes) are undocumented legacy APIs. They are superseded by the `dumpd`/`dumps`/`load`/`loads` serialization APIs in `langchain_core.load`, which do not perform filesystem reads and use an allowlist-based security model. As part of this fix, the legacy APIs have been formally deprecated and will be removed in 2.0.0. ## Affected component **Package:** `langchain-core` **File:** `langchain_core/prompts/loading.py` **Affected functions:** `_load_template()`, `_load_examples()`, `_load_few_shot_prompt()` ## Severity **High** The score reflects the file-extension constraints that limit which files can be read. ## Vulnerable code paths | Config key | Loaded by | Readable extensions | |---|---|---| | `template_path`, `suffix_path`, `prefix_path` | `_load_template()` | `.txt` | | `examples` (when string) | `_load_examples()` | `.json`, `.yaml`, `.yml` | | `example_prompt_path` | `_load_few_shot_prompt()` | `.json`, `.yaml`, `.yml` | None of these code paths validated the supplied path against absolute path injection or `..` traversal sequences before reading from disk. ## Impact An attacker who controls or influences the prompt configuration dict can read files outside the intended directory: - **`.txt` files:** cloud-mounted secrets (`/mnt/secrets/api_key.txt`), `requirements.txt`, internal system prompts - **`.json`/`.yaml` files:** cloud credentials (`~/.docker/config.json`, `~/.azure/accessTokens.json`), Kubernetes manifests, CI/CD configs, application settings This is exploitable in applications that accept prompt configs from untrusted sources, including low-code AI builders and API wrappers that expose `load_prompt_from_config()`. ## Proof of concept ```python from langchain_core.prompts.loading import load_prompt_from_config # Reads /tmp/secret.txt via absolute path injection config = { "_type": "prompt", "template_path": "/tmp/secret.txt", "input_variables": [], } prompt = load_prompt_from_config(config) print(prompt.template) # file contents disclosed # Reads ../../etc/secret.txt via directory traversal config = { "_type": "prompt", "template_path": "../../etc/secret.txt", "input_variables": [], } prompt = load_prompt_from_config(config) # Reads arbitrary .json via few-shot examples config = { "_type": "few_shot", "examples": "../../../../.docker/config.json", "example_prompt": { "_type": "prompt", "input_variables": ["input", "output"], "template": "{input}: {output}", }, "prefix": "", "suffix": "{query}", "input_variables": ["query"], } prompt = load_prompt_from_config(config) ``` ## Mitigation **Update `langchain-core` to >= 1.2.22.** The fix adds path validation that rejects absolute paths and `..` traversal sequences by default. An `allow_dangerous_paths=True` keyword argument is available on `load_prompt()` and `load_prompt_from_config()` for trusted inputs. As described above, these legacy APIs have been formally deprecated. Users should migrate to `dumpd`/`dumps`/`load`/`loads` from `langchain_core.load`. ## Credit - [jiayuqi7813](https://github.com/jiayuqi7813) reporter - [VladimirEliTokarev](https://github.com/VladimirEliTokarev) reporter - [Rickidevs](https://github.com/Rickidevs) reporter - Kenneth Cox (cczine@gmail.com) reporter

Affected Products

VendorProductVersions
nulllangchain-corepip/langchain-core: < 1.2.22

References

  • https://github.com/advisories/GHSA-qh6h-p6c9-ff54(advisory)
  • https://github.com/langchain-ai/langchain/security/advisories/GHSA-qh6h-p6c9-ff54
  • https://github.com/langchain-ai/langchain/commit/27add913474e01e33bededf4096151130ba0d47c
  • https://github.com/langchain-ai/langchain/releases/tag/langchain-core==1.2.22
  • https://github.com/advisories/GHSA-qh6h-p6c9-ff54

Related News (3 articles)

Tier D
CSO Online10h ago
LangChain path traversal bug adds to input validation woes in AI pipelines
→ No new info (linked only)
Tier B
BSI Advisories3d ago
[NEU] [mittel] LangChain: Schwachstelle ermöglicht Offenlegung von Informationen
→ No new info (linked only)
Tier D
The Hacker News3d ago
LangChain, LangGraph Flaws Expose Files, Secrets, Databases in Widely Used AI Frameworks
→ No new info (linked only)
CVSS 3.17.5 HIGH
VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CISA KEV❌ No
Actively exploited✅ Yes
Patch availablelangchain-core@1.2.22
CWECWE-22, CWE-20
PublishedMar 27, 2026
Last enriched10h agov2
Tags
GHSA-qh6h-p6c9-ff54pip
Trending Score38
Source articles3
Independent3
Info Completeness10/14
Missing: epss, kev, iocs, mitre_attack

Community Vote

0
Login to vote
0 upvotes0 downvotes
No votes yet

Related CVEs (5)

NONECVE-2018-25225EXP
SIPP 3.3 Stack-Based Buffer Overflow via Configuration File
Trending: 37
CRITICALCVE-2026-28505EXP
Tautulli: RCE via eval() sandbox bypass using lambda nested scope to escape co_names whitelist check
Trending: 33
CRITICALCVE-2026-31799
Tautulli: SQL Injection in get_home_stats API endpoint via unsanitised filter parameters
Trending: 31
MEDIUMCVE-2026-34040EXP
Moby has AuthZ plugin bypass when provided oversized request bodies
Trending: 28
HIGHCVE-2026-33533
Glances Vulnerable to Cross-Origin System Information Disclosure via XML-RPC Server CORS Wildcard
Trending: 27

Pin to Dashboard

Verification

State: unverified
Confidence: 0%

Vulnerability Timeline

CVE Published
Mar 27, 2026
Actively Exploited
Mar 27, 2026
Exploit Available
Mar 27, 2026
Patch Available
Mar 27, 2026
Discovered by ZDM
Mar 27, 2026
Updated: cweIds, exploitAvailable, activelyExploited
Mar 30, 2026

Version History

v2
Last enriched 10h ago
v2Tier D10h ago

Added CWE-20, marked exploit as available and actively exploited, and updated patch availability to null.

cweIdsexploitAvailableactivelyExploited
via CSO Online
v13d ago

Initial creation