LangChain CVE-2025-68664: Hogyan szivárognak ki személyes adatok a RAG-folyamaton keresztül
Frissítve: 2026.
2025 végén kritikus hibát találtak a LangChainben. A CVE azonosítója: CVE-2025-68664. A CVSS-pontszám: 9,3 (kritikus).
A LangChain szerializációs kódját célozza.
Mit csinál a CVE-2025-68664?
A LangChainnek két szerializációs függvénye van: dumps() és dumpd(). Python-objektumokat alakítanak szöveggé.
A hiba a closure-kezelésben rejlik.
Amikor a LangChain szerializál egy hívhatót, megragadja a closure-kontextust.
Egy támadó, aki irányítja az LLM-választ, aktiválhatja a dumps() függvényt. A függvény ekkor beolvassa a Python-folyamat környezeti változóit.
Az eredmény adatexponálás. API-kulcsok, adatbázis-kapcsolati stringek, JWT-titkok és AWS-hitelesítő adatok jelenhetnek meg a modell kimenetében.
Egy támadó, aki szöveget injektál egy RAG-forrás dokumentumba, kiolvashatja az éles titkokat.
Érintett verziók: 0.3.22 alatti LangChain (Python). A 0.3.22-es verzió tartalmazza a javítást.
A PyPI adatai szerint régebbi verziók 2026 márciusáig széles körben használatban maradtak.
Hogyan szivárognak ki személyes adatok RAG-folyamatokon?
A CVE-2025-68664 látványos eset. De ez csupán egy eset egy tágabb problémából.
A RAG-folyamatokon keresztül routinszerűen szivárognak adatok. Nincs szükség támadóra.
Íme egy tipikus vállalati RAG-felállás.
Először az indexelés. Vállalati dokumentumokat indexel egy vektortárba. Gondoljon ügyfélszolgálati jegyekre, ügyfél-e-mailekre, szerződésekre és HR-nyilvántartásokra.
Glattors vektortárak: Pinecone, Weaviate és pgvector.
Majd a lekérés. A felhasználó kérdez. A rendszer lekéri a tárból az öt legrelevánsabb szövegdarabot.
Aztán a generálás. Ezek a szövegdarabok kontextusként kerülnek az LLM-be — GPT-4o-ba, Claude-ba vagy Geminibe.
A második lépés a probléma. A lekért szövegdarabok azt tartalmazzák, amit a forrásdokumentumok tartalmaztak. Ez magában foglalja:
- Ügyféleteket, e-mail-címeket és telefonszámokat
- Szerződéses értékeket, számlaszámokat és adóazonosítókat
- Munkavállalói béradatokat és teljesítményértékelési feljegyzéseket
- Betegneveket klinikai feljegyzésekben
- Személyazonosítószámokat bevándorlási aktákban
Ezek az adatok változtatás nélkül kerülnek az LLM-be. Megjelenhetnek a modell kimenetében.
Az LLM-szolgáltató naplózza őket. Megmaradnak a társalgástörténetben. Beáramlanak az observabilitási rendszerbe.
Nem szükséges támadó. Így működik tervezetten a RAG. A tervezés valódi adatvédelmi kockázatot teremt.
68 ismert titokpatt a vállalati dokumentumtárakban
A biztonsági eszközök 68 ismert titokpattot követnek nyomon. Ezek a várt szintűnél gyakrabban fordulnak elő.
A leggyakoribbak:
- AWS hozzáférési kulcs azonosítók (
AKIA...) - OpenAI API-kulcsok (
sk-...) - Anthropic API-kulcsok (
sk-ant-...) - Adatbázis-URI-k (
postgresql://user:password@host/db) - JWT-tokenek (base64 kódolt fejlécek)
- GitHub személyes hozzáférési tokenek
- Stripe titkos kulcsok (
sk_live_...) - SendGrid API-kulcsok
- Twilio fiókos SID-ek és hitelesítési tokenek
- Privát kulcs PEM-blokkok
Egy ügyfélszolgálati jegy tartalmazhatja az ügyfél API-kulcsát egy hibakereső munkamenetből.
Egy szerződés adatbázis-hitelesítő adatokat tartalmazhat egy technikai átadásból.
Egy véletlenül indexelt konfigurációs fájl egy teljes titoktárat tehet ki.
Ha ezek a fájlok fertőtlenítés nélkül kerülnek egy vektortárba, minden lekérdezés átadhatja a titkokat az LLM-nek.
Végül a végfelhasználóhoz is eljuthatnak.
Javítás: Anonimizálás az indexelés előtt
A helyes megközelítés a dokumentumok anonimizálása az indexelés és a beágyazás előtt.
Ez a lépés kötelező minden ügyfélaltat kezelő rendszernél.
Íme egy Python-példa az anonym.legal API használatával:
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]:
"""PII anonimizálása beágyazás előtt."""
response = requests.post(
f"{ANONYM_BASE_URL}/presidio/anonymize",
json={
"text": text,
"language": "en",
"anonymizers": {
"DEFAULT": {"type": "replace", "new_value": "[REDACTED]"},
"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": "[PHONE]"},
"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):
"""RAG-index felépítése csak tiszta dokumentumokból."""
anonymized_docs = []
for doc in documents:
clean_text, entities = anonymize_before_embedding(doc)
anonymized_docs.append(clean_text)
print(f"{len(entities)} PII-entitás eltávolítva a dokumentumból")
vectorstore.add_texts(anonymized_docs)
Az anonym.legal API 285+ entitástípust fed le. Neveket, e-mail-címeket, telefonszámokat, személyazonossági számokat, API-kulcsokat és adatbázis-URI-kat is elfog.
Semmi érzékeny nem kerül a vektortárba. Így semmi érzékeny nem szivároghat ki a felhasználókhoz.
A LangChain és LlamaIndex beállítási mintáiról lásd a fejlesztői útmutatót.
A CVE-2025-68664 azonnali javítása
Ha 0.3.22 alatti LangChainet futtat, frissítsen most:
pip install "langchain>=0.3.22" "langchain-core>=0.3.22"
A javítás után ellenőrizze a chain-konfigurációkat injekciós kockázat szempontjából. Három lépés következik.
Először validálja a lekért szövegdarabokat. Tegye ezt az LLM-be küldés előtt.
Távolítsa el az olyan tartalmakat, amelyek injekciós mintáknak felelnek meg: ignore previous instructions, system: vagy <INST>.
Másodszor anonimizáljon beágyazás előtt. Ez csökkenti a támadási felületet.
Ha injekció is megtörténik, az érzékeny adatok már nem találhatók ott.
Harmadszor korlátozza a chain-jogosultságokat. A LangChain-chainek nem olvashatnak a szükségesnél több környezeti változót.
Használjon minimális hatókörű szolgáltatásfiókot.
A számítás egyszerű
A CVSS-pontszám 9,3. A javítás dokumentumonként egy API-hívás.
A CVE-2025-68664 és az általános RAG-adatkockázat kombinációja valós felelősségi terhet jelent.
A megoldás egyértelmű: anonimizáljon betöltéskor, ne lekérdezéskor.
A vállalati RAG-követelményekért tekintse át a biztonsági és megfelelőségi áttekintőt.
Források
- NVD CVE-2025-68664, CVSS 9,3, LangChain szerializációs sérülékenység
- LangChain biztonsági tanácsadó, langchain-ai/langchain GitHub, 2025
- OWASP LLM Top 10: LLM01 Prompt Injection, LLM06 Érzékeny információ közzététele
- anonym.legal entitástípus dokumentáció — 285+ támogatott entitástípus