CVE-2026-40087

Source
https://cve.org/CVERecord?id=CVE-2026-40087
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-40087.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-40087
Aliases
Downstream
Related
Published
2026-04-09T19:34:55.198Z
Modified
2026-08-04T11:50:52.928765807Z
Severity
  • 5.3 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N CVSS Calculator
Summary
LangChain has incomplete f-string validation in prompt templates
Details

LangChain is a framework for building agents and LLM-powered applications. Prior to 0.3.84 and 1.2.28, LangChain's f-string prompt-template validation was incomplete in two respects. First, some prompt template classes accepted f-string templates and formatted them without enforcing the same attribute-access validation as PromptTemplate. In particular, DictPromptTemplate and ImagePromptTemplate could accept templates containing attribute access or indexing expressions and subsequently evaluate those expressions during formatting. Second, f-string validation based on parsed top-level field names did not reject nested replacement fields inside format specifiers. In this pattern, the nested replacement field appears in the format specifier rather than in the top-level field name. As a result, earlier validation based on parsed field names did not reject the template even though Python formatting would still attempt to resolve the nested expression at runtime. This vulnerability is fixed in 0.3.84 and 1.2.28.

Database specific
{
    "cwe_ids": [
        "CWE-1336"
    ],
    "cna_assigner": "GitHub_M",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40087.json"
}
References

Affected packages

Git / github.com/langchain-ai/langchain

Affected ranges

Type
GIT
Repo
https://github.com/langchain-ai/langchain
Events
Introduced
0 Unknown introduced commit / All previous commits are affected
Fixed
Introduced
Fixed
Database specific
{
    "source": "AFFECTED_FIELD",
    "extracted_events": [
        {
            "introduced": "0"
        },
        {
            "fixed": "0.3.83"
        },
        {
            "introduced": "1.0.0a1"
        },
        {
            "fixed": "1.2.28"
        }
    ]
}

Affected versions

langchain-anthropic==0.*
langchain-anthropic==0.3.20
langchain-anthropic==0.3.21
langchain-anthropic==0.3.22
langchain-anthropic==1.*
langchain-anthropic==1.0.0
langchain-anthropic==1.0.0a3
langchain-anthropic==1.0.0a4
langchain-anthropic==1.0.0a5
langchain-anthropic==1.0.1
langchain-anthropic==1.0.2
langchain-anthropic==1.0.3
langchain-anthropic==1.1.0
langchain-anthropic==1.2.0
langchain-anthropic==1.3.0
langchain-anthropic==1.3.1
langchain-anthropic==1.3.2
langchain-anthropic==1.3.3
langchain-anthropic==1.3.4
langchain-anthropic==1.3.5
langchain-anthropic==1.4.0
langchain-chroma==0.*
langchain-chroma==0.2.6
langchain-chroma==1.*
langchain-chroma==1.0.0
langchain-chroma==1.0.0a1
langchain-chroma==1.1.0
langchain-classic==1.*
langchain-classic==1.0.0
langchain-classic==1.0.1
langchain-classic==1.0.2
langchain-classic==1.0.3
langchain-cli==0.*
langchain-cli==0.0.37
langchain-cli==1.*
langchain-cli==1.0.0a1
langchain-core==0.*
langchain-core==0.3.76
langchain-core==0.3.77
langchain-core==0.3.78
langchain-core==0.3.79
langchain-core==0.3.80
langchain-core==0.3.81
langchain-core==0.3.82
langchain-core==1.*
langchain-core==1.0.0
langchain-core==1.0.0a7
langchain-core==1.0.0a8
langchain-core==1.0.0rc1
langchain-core==1.0.0rc2
langchain-core==1.0.0rc3
langchain-core==1.0.1
langchain-core==1.0.2
langchain-core==1.0.3
langchain-core==1.0.4
langchain-core==1.0.5
langchain-core==1.0.6
langchain-core==1.0.7
langchain-core==1.1.0
langchain-core==1.1.1
langchain-core==1.1.2
langchain-core==1.1.3
langchain-core==1.2.0
langchain-core==1.2.1
langchain-core==1.2.10
langchain-core==1.2.11
langchain-core==1.2.12
langchain-core==1.2.13
langchain-core==1.2.14
langchain-core==1.2.15
langchain-core==1.2.16
langchain-core==1.2.17
langchain-core==1.2.18
langchain-core==1.2.19
langchain-core==1.2.2
langchain-core==1.2.20
langchain-core==1.2.21
langchain-core==1.2.22
langchain-core==1.2.23
langchain-core==1.2.24
langchain-core==1.2.25
langchain-core==1.2.26
langchain-core==1.2.27
langchain-core==1.2.3
langchain-core==1.2.4
langchain-core==1.2.5
langchain-core==1.2.6
langchain-core==1.2.7
langchain-core==1.2.8
langchain-core==1.2.9
langchain-deepseek==1.*
langchain-deepseek==1.0.0
langchain-deepseek==1.0.0a1
langchain-deepseek==1.0.1
langchain-exa==0.*
langchain-exa==0.3.1
langchain-exa==1.*
langchain-exa==1.0.0
langchain-exa==1.0.0a1
langchain-exa==1.1.0
langchain-fireworks==1.*
langchain-fireworks==1.0.0
langchain-fireworks==1.0.0a1
langchain-fireworks==1.1.0
langchain-groq==0.*
langchain-groq==0.3.8
langchain-groq==1.*
langchain-groq==1.0.0
langchain-groq==1.0.0a1
langchain-groq==1.0.1
langchain-groq==1.1.0
langchain-groq==1.1.1
langchain-groq==1.1.2
langchain-huggingface==1.*
langchain-huggingface==1.0.0
langchain-huggingface==1.0.0a1
langchain-huggingface==1.0.1
langchain-huggingface==1.1.0
langchain-huggingface==1.2.0
langchain-huggingface==1.2.1
langchain-mistralai==0.*
langchain-mistralai==0.2.12
langchain-mistralai==1.*
langchain-mistralai==1.0.0
langchain-mistralai==1.0.0a1
langchain-mistralai==1.0.1
langchain-mistralai==1.1.0
langchain-mistralai==1.1.1
langchain-mistralai==1.1.2
langchain-model-profiles==0.*
langchain-model-profiles==0.0.1
langchain-model-profiles==0.0.2
langchain-model-profiles==0.0.3
langchain-model-profiles==0.0.4
langchain-model-profiles==0.0.5
langchain-nomic==0.*
langchain-nomic==0.1.5
langchain-nomic==1.*
langchain-nomic==1.0.0
langchain-nomic==1.0.0a1
langchain-nomic==1.0.1
langchain-ollama==0.*
langchain-ollama==0.3.10
langchain-ollama==0.3.8
langchain-ollama==0.3.9
langchain-ollama==1.*
langchain-ollama==1.0.0
langchain-ollama==1.0.1
langchain-ollama==1.1.0
langchain-openai==0.*
langchain-openai==0.3.33
langchain-openai==0.3.34
langchain-openai==0.3.35
langchain-openai==1.*
langchain-openai==1.0.0
langchain-openai==1.0.0a4
langchain-openai==1.0.1
langchain-openai==1.0.2
langchain-openai==1.0.3
langchain-openai==1.1.0
langchain-openai==1.1.1
langchain-openai==1.1.10
langchain-openai==1.1.11
langchain-openai==1.1.12
langchain-openai==1.1.2
langchain-openai==1.1.3
langchain-openai==1.1.4
langchain-openai==1.1.5
langchain-openai==1.1.6
langchain-openai==1.1.7
langchain-openai==1.1.8
langchain-openai==1.1.9
langchain-openrouter==0.*
langchain-openrouter==0.0.1
langchain-openrouter==0.0.2
langchain-openrouter==0.1.0
langchain-openrouter==0.2.0
langchain-openrouter==0.2.1
langchain-perplexity==1.*
langchain-perplexity==1.0.0
langchain-perplexity==1.0.0a1
langchain-perplexity==1.1.0
langchain-prompty==0.*
langchain-prompty==0.1.2
langchain-prompty==1.*
langchain-prompty==1.0.0
langchain-prompty==1.0.0a1
langchain-qdrant==0.*
langchain-qdrant==0.2.1
langchain-qdrant==1.*
langchain-qdrant==1.0.0
langchain-qdrant==1.0.0a1
langchain-qdrant==1.1.0
langchain-standard-tests==1.*
langchain-standard-tests==1.1.3
langchain-standard-tests==1.1.4
langchain-tests==0.*
langchain-tests==0.3.21
langchain-tests==0.3.22
langchain-tests==1.*
langchain-tests==1.0.0
langchain-tests==1.0.0a2
langchain-tests==1.0.0rc1
langchain-tests==1.0.1
langchain-tests==1.0.2
langchain-tests==1.1.0
langchain-tests==1.1.1
langchain-tests==1.1.2
langchain-tests==1.1.3
langchain-tests==1.1.4
langchain-tests==1.1.5
langchain-tests==1.1.6
langchain-text-splitters==0.*
langchain-text-splitters==0.3.10
langchain-text-splitters==0.3.11
langchain-text-splitters==1.*
langchain-text-splitters==1.0.0
langchain-text-splitters==1.0.0a1
langchain-text-splitters==1.1.0
langchain-text-splitters==1.1.1
langchain-xai==1.*
langchain-xai==1.0.0
langchain-xai==1.0.0a1
langchain-xai==1.1.0
langchain-xai==1.2.0
langchain-xai==1.2.1
langchain-xai==1.2.2
langchain==1.*
langchain==1.0.0
langchain==1.0.0a1
langchain==1.0.0a10
langchain==1.0.0a11
langchain==1.0.0a12
langchain==1.0.0a13
langchain==1.0.0a14
langchain==1.0.0a15
langchain==1.0.0a2
langchain==1.0.0a3
langchain==1.0.0a4
langchain==1.0.0a5
langchain==1.0.0a6
langchain==1.0.0a7
langchain==1.0.0a8
langchain==1.0.0a9
langchain==1.0.0rc1
langchain==1.0.0rc2
langchain==1.0.1
langchain==1.0.2
langchain==1.0.3
langchain==1.0.4
langchain==1.0.5
langchain==1.1.0
langchain==1.1.1
langchain==1.1.2
langchain==1.1.3
langchain==1.2.0
langchain==1.2.1
langchain==1.2.10
langchain==1.2.11
langchain==1.2.12
langchain==1.2.13
langchain==1.2.14
langchain==1.2.15
langchain==1.2.2
langchain==1.2.3
langchain==1.2.4
langchain==1.2.5
langchain==1.2.6
langchain==1.2.7
langchain==1.2.8
langchain==1.2.9

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-40087.json"