CVE-2025-68664 LangChain: Cum Se Scurge PII Prin Pipeline-ul Dvs. RAG
Actualizat pentru 2026.
O eroare critică a fost găsită în LangChain la sfârșitul anului 2025. CVE-ul este CVE-2025-68664. Scorul CVSS este 9,3 (Critic).
Vizează codul de serializare LangChain.
Ce Face CVE-2025-68664
LangChain are două funcții de serializare: dumps() și dumpd(). Acestea convertesc obiecte Python în text.
Defectul este în gestionarea closure-urilor.
Când LangChain serializează un callable, captează contextul closure-ului.
Un atacator care controlează răspunsul LLM poate declanșa dumps(). Funcția citește apoi variabilele de mediu din procesul Python.
Rezultatul este expunerea de date. Cheile API, șirurile de baze de date, secretele JWT și credențialele AWS pot apărea în ieșirea modelului.
Un atacator care injectează text într-un document sursă RAG poate citi secretele dvs. de producție.
Versiuni afectate: LangChain sub 0.3.22 (Python). Versiunea 0.3.22 are remedierea.
Datele PyPI arată utilizare largă a versiunilor mai vechi până în martie 2026.
Cum Se Scurge PII în Pipeline-urile RAG
CVE-2025-68664 este dramatic. Dar este doar un caz al unei probleme mai largi.
Datele se scurg prin pipeline-urile RAG în mod obișnuit. Nu este nevoie de niciun atacator.
Iată o configurație standard RAG enterprise.
Mai întâi, ingestia. Indexați documentele companiei într-un vector store. Gândiți-vă la tichete de suport, emailuri ale clienților, contracte și înregistrări HR.
Vector store-urile comune sunt Pinecone, Weaviate și pgvector.
Urmează, recuperarea. Un utilizator pune o întrebare. Sistemul extrage cele mai relevante cinci bucăți din store.
Apoi, generarea. Acele bucăți merg la un LLM — GPT-4o, Claude sau Gemini — ca context.
Pasul doi este problema. Bucățile recuperate conțin tot ce au conținut documentele sursă. Aceasta include:
- Numele clienților, adresele de email și numerele de telefon
- Valorile contractelor, numerele de cont și identificatorii fiscali
- Datele salariale ale angajaților și notele de evaluare a performanței
- Numele pacienților în notele clinice
- Numerele de identificare națională în fișierele de imigrare
Acele date merg la LLM ca atare. Pot apărea în ieșirea modelului.
Sunt înregistrate de furnizorul LLM. Stau în istoricul conversației dvs. Curg în stiva dvs. de observabilitate.
Nu este nevoie de niciun atac. Așa funcționează RAG prin proiectare. Proiectarea creează risc real de confidențialitate.
68 de Modele de Secrete în Depozitele de Documente Enterprise
Instrumentele de securitate urmăresc 68 de modele de secrete cunoscute. Apar mai des decât se așteaptă echipele.
Iată cele mai comune.
- ID-uri de cheie de acces AWS (
AKIA...) - Chei API OpenAI (
sk-...) - Chei API Anthropic (
sk-ant-...) - URI-uri de baze de date (
postgresql://user:password@host/db) - Token-uri JWT (antete codificate base64)
- Token-uri de acces personal GitHub
- Chei secrete Stripe (
sk_live_...) - Chei API SendGrid
- SID-uri de cont Twilio și token-uri de autentificare
- Blocuri PEM de chei private
Un tichet de suport poate conține o cheie API a clientului dintr-o sesiune de depanare.
Un contract poate include credențiale de baze de date dintr-un transfer tehnic.
Un fișier de configurare indexat din greșeală poate expune un întreg depozit de secrete.
Când aceste fișiere intră într-un vector store fără sanitizare, fiecare interogare poate transmite secretele LLM-ului.
Pot ajunge și la utilizatorul final.
Remediați: Anonimizați Înainte de Embedding
Abordarea corectă anonimizează documentele înainte de fragmentare și embedding.
Acest pas este necesar pentru orice sistem care gestionează datele clienților.
Iată un exemplu Python folosind API-ul anonym.legal:
import requests
import os
ANONYM_API_KEY = os.environ["ANONYM_API_KEY"]
ANONYM_BASE_URL = "https://anonym.legal/api"
def anonymize_before_embedding(text: str) -> tuple[str, dict]:
"""Anonimizează PII înainte de embedding."""
response = requests.post(
f"{ANONYM_BASE_URL}/presidio/anonymize",
json={
"text": text,
"language": "en",
"anonymizers": {
"DEFAULT": {"type": "replace", "new_value": "[REDACTAT]"},
"PERSON": {"type": "mask", "masking_char": "*", "chars_to_mask": 4, "from_end": False},
"EMAIL_ADDRESS": {"type": "replace", "new_value": "[EMAIL]"},
"PHONE_NUMBER": {"type": "replace", "new_value": "[TELEFON]"},
"CRYPTO": {"type": "replace", "new_value": "[SECRET]"},
"URL": {"type": "keep"},
}
},
headers={"Authorization": f"Bearer {ANONYM_API_KEY}"}
)
result = response.json()
return result["text"], result.get("items", [])
def build_rag_index(documents: list[str], vectorstore):
"""Construiește un index RAG doar cu documente curate."""
anonymized_docs = []
for doc in documents:
clean_text, entities = anonymize_before_embedding(doc)
anonymized_docs.append(clean_text)
print(f"Eliminat {len(entities)} entități PII din document")
vectorstore.add_texts(anonymized_docs)
API-ul anonym.legal acoperă 285+ tipuri de entități. Numele, emailurile, numerele de telefon, CNP-urile naționale, cheile API și URI-urile de baze de date sunt toate prinse.
Nimic sensibil nu ajunge la vector store. Deci nimic sensibil nu poate scurge la utilizatori.
Consultați ghidul pentru dezvoltatori pentru modele de configurare LangChain și LlamaIndex.
Remediați CVE-2025-68664 Chiar Acum
Dacă rulați LangChain sub 0.3.22, actualizați acum:
pip install "langchain>=0.3.22" "langchain-core>=0.3.22"
După aplicarea patch-ului, verificați configurațiile chain-ului pentru risc de injecție. Iată trei pași de urmat.
Mai întâi, validați bucățile recuperate. Faceți asta înainte de a ajunge la LLM.
Eliminați conținutul care corespunde modelelor de injecție cum ar fi ignorați instrucțiunile anterioare, sistem: sau <INST>.
În al doilea rând, anonimizați înainte de embedding. Aceasta reduce suprafața de atac.
Dacă injecția are loc, datele sensibile nu sunt acolo pentru a fi extrase.
În al treilea rând, restricționați permisiunile chain-ului. Chain-urile LangChain nu ar trebui să citească variabile de mediu dincolo de ce au nevoie.
Folosiți un cont de serviciu cu domeniu minim.
Matematica Este Simplă
Scorul CVSS este 9,3. Remedierea este un apel API pe document.
Combinația de CVE-2025-68664 și riscul general de date RAG este o răspundere reală.
Soluția este clară: anonimizați la ingestie, nu la momentul interogării.
Verificați prezentarea de securitate și conformitate pentru cerințele RAG enterprise.
Surse
- NVD CVE-2025-68664, CVSS 9,3, vulnerabilitate de serializare LangChain
- Aviz de securitate LangChain, langchain-ai/langchain GitHub, 2025
- OWASP LLM Top 10: LLM01 Injecție de Prompturi, LLM06 Divulgare de Informații Sensibile
- Documentația tipurilor de entități anonym.legal — 285+ tipuri de entități suportate