LangChain CVE-2025-68664: kuidas isikuandmed lekivad teie RAG-torujuhtmest
Uuendatud 2026. aastaks.
- aasta lõpus avastati LangChainis kriitiline viga. CVE on CVE-2025-68664. CVSS-skoor on 9,3 (kriitiline).
See on suunatud LangChaini serialiseerimiskoodi vastu.
Mida CVE-2025-68664 teeb
LangChainil on kaks serialiseerimisfunktsiooni: dumps() ja dumpd(). Need teisendavad Pythoni objekte tekstiks.
Viga peitub sulgemise käsitlemises.
Kui LangChain serialiseerib kutsutava, püüab ta sulgemiskonteksti.
Ründaja, kes kontrollib LLM-i vastust, saab käivitada dumps(). Funktsioon loeb seejärel Pythoni protsessist keskkonna muutujaid.
Tulemuseks on andmete paljastumine. API-võtmed, andmebaasistringid, JWT-saladused ja AWS-i mandaadid võivad ilmuda mudeli väljundis.
Ründaja, kes süstib teksti RAG-i lähtedokumenti, saab lugeda teie tootmissaladusi.
Mõjutatud versioonid: LangChain alla 0.3.22 (Python). Versioonil 0.3.22 on parandus.
PyPI andmed näitavad vanemate versioonide laialdast kasutust kuni märtsini 2026.
Kuidas isikuandmed lekivad RAG-torujuhtmetes
CVE-2025-68664 on dramaatiline. Kuid see on vaid üks juhtum laiemast probleemist.
Andmed lekivad RAG-torujuhtmetes regulaarselt. Ründajat ei ole vaja.
Siin on standardne ettevõtte RAG-seadistus.
Esiteks sisestamine. Indekseerite ettevõtte dokumendid vektorsalve. Mõelge tugipiletitele, klientide e-kirjadele, lepingutele ja personaliarvestustele.
Levinumad vektorsalved on Pinecone, Weaviate ja pgvector.
Järgmisena toomine. Kasutaja esitab küsimuse. Süsteem tõmbab salvestusest viis kõige asjakohasemat tükki.
Seejärel genereerimine. Need tükid saadetakse LLM-ile — GPT-4o, Claude'ile või Geminile — kontekstina.
Teine samm on probleem. Toodud tükid sisaldavad kõike, mida lähtedokumendid sisaldasid. See hõlmab:
- Klientide nimesid, e-posti aadresse ja telefoninumbreid
- Lepingute väärtuseid, kontonumbreid ja maksuidentifikaatoreid
- Töötajate palgaandmeid ja tulemuslikkuse ülevaate märkmeid
- Patsiendi nimesid kliinilistes märkmetes
- Isikukoode immigratsiooniandmetes
Need andmed saadetakse LLM-ile sellisena, nagu need on. Need võivad ilmuda mudeli väljundis.
LLM-i pakkuja logib need. Need istuvad teie vestlusajaloos. Need voolavad teie jälgimisvirna.
Rünnakut ei ole vaja. Nii RAG vaikimisi töötab. Disain loob reaalse privaatsusriski.
68 saladuste mustrit ettevõtte dokumentide salvestustes
Turvatööriistad jälgivad 68 teadaolevat salajaste mustrit. Need ilmuvad sagedamini, kui meeskonnad ootavad.
Siin on kõige levinumad.
- AWS-i juurdepääsuvõtme ID-d (
AKIA...) - OpenAI API-võtmed (
sk-...) - Anthropic API-võtmed (
sk-ant-...) - Andmebaasi URI-d (
postgresql://kasutaja:parool@host/db) - JWT-tokenid (base64-kodeeritud päised)
- GitHubi isikupõhised juurdepääsutokenid
- Stripe'i salasvõtmed (
sk_live_...) - SendGridi API-võtmed
- Twilio kontoSID-id ja autentimistokenid
- Privaatvõtme PEM-plokid
Tugipileti võib sisaldada kliendi API-võtit silumisseansi käigus.
Leping võib sisaldada andmebaasi mandaate tehnilistest üleandmistest.
Kogemata indekseeritud konfiguratsioonifail võib paljastada kogu saladuste salvestuse.
Kui need failid sisestatakse vektorsalve ilma puhastamiseta, võib iga päring edastada saladused LLM-ile.
Need võivad jõuda ka lõppkasutajani.
Parandus: anonuumige enne manustamist
Õige lähenemisviis anonuumib dokumendid enne tükeldamist ja manustamist.
See samm on nõutav igale süsteemile, mis käsitleb klientide andmeid.
Siin on Pythoni näide kasutades anonym.legal API-d:
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]:
"""Anonuumige isikuandmed enne manustamist."""
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):
"""Ehitage RAG-indeks ainult puhaste dokumentidega."""
anonymized_docs = []
for doc in documents:
clean_text, entities = anonymize_before_embedding(doc)
anonymized_docs.append(clean_text)
print(f"Eemaldati {len(entities)} isikuandmete olemit dokumendist")
vectorstore.add_texts(anonymized_docs)
anonym.legal API katab 285+ olemitüüpi. Nimed, meilid, telefoninumbrid, isikukoodid, API-võtmed ja andmebaasi URI-d kõik tabatakse.
Midagi tundlikku ei jõua vektorsalve. Seega ei saa midagi tundlikku kasutajatele lekkida.
Vaadake arendajate juhendit LangChaini ja LlamaIndexi seadistusmustreid.
Parandage CVE-2025-68664 kohe
Kui käitate LangChainit alla 0.3.22, uuendage kohe:
pip install "langchain>=0.3.22" "langchain-core>=0.3.22"
Pärast paranduse rakendamist kontrollige ahela konfiguratsioone süstimisriski osas. Siin on kolm sammu.
Esiteks valideerige toodud tükid. Tehke seda enne nende jõudmist LLM-ile.
Eemaldage sisu, mis vastab süstimismustritele nagu ignore previous instructions, system: või <INST>.
Teiseks anonuumige enne manustamist. See vähendab rünnakupinda.
Kui süstimine siiski toimub, ei ole tundlikke andmeid seal, mida eraldada.
Kolmandaks piirange ahela lube. LangChaini ahelad ei peaks lugema keskkonna muutujaid, mis on väljaspool nende vajadust.
Kasutage teenusekontot minimaalse ulatusega.
Matemaatika on lihtne
CVSS-skoor on 9,3. Parandus on üks API-kutse dokumendi kohta.
CVE-2025-68664 ja üldise RAG-i andmeriski kombinatsioon on reaalne vastutus.
Lahendus on selge: anonuumige sisestamisel, mitte päringuajal.
Vaadake turvalisuse ja vastavuse ülevaadet ettevõtte RAG-nõuete jaoks.
Allikad
- NVD CVE-2025-68664, CVSS 9,3, LangChaini serialiseerimise haavatavus
- LangChaini turvanivestis, langchain-ai/langchain GitHub, 2025
- OWASP LLM Top 10: LLM01 viipade süstimine, LLM06 tundliku teabe avalikustamine
- anonym.legal olemitüüpide dokumentatsioon — 285+ toetatud olemitüüpi