LangChain CVE-2025-68664: Miten PII vuotaa RAG-putkistosi läpi
Päivitetty vuodelle 2026.
LangChainissa löydettiin kriittinen haavoittuvuus vuoden 2025 lopulla. CVE on CVE-2025-68664. CVSS-pistemäärä on 9,3 (Kriittinen).
Se kohdistuu LangChainin serialisointikoodiin.
Mitä CVE-2025-68664 tekee
LangChainilla on kaksi serialisointifunktiota: dumps() ja dumpd(). Ne muuntavat Python-objekteja tekstiksi.
Haavoittuvuus on sulkeumien käsittelyssä.
Kun LangChain serialisoi kutsuttavan, se sieppaa sulkeumakontekstin.
Hyökkääjä, joka hallitsee LLM:n vastausta, voi käynnistää dumps()-funktion. Funktio lukee sitten Python-prosessin ympäristömuuttujia.
Tuloksena on tietovuoto. API-avaimet, tietokantayhteysmerkkijonot, JWT-salaisuudet ja AWS-tunnisteet voivat ilmaantua mallin tulosteeseen.
Hyökkääjä, joka injektoi tekstiä RAG-lähdedokumenttiin, voi lukea tuotantoympäristösi salaisuudet.
Vaikuttavat versiot: LangChain alle 0.3.22 (Python). Versio 0.3.22 sisältää korjauksen.
PyPI-tiedot osoittavat vanhojen versioiden laajan käytön maaliskuuhun 2026 asti.
Miten PII vuotaa RAG-putkistoista
CVE-2025-68664 on dramaattinen. Mutta se on vain yksi tapaus laajemmasta ongelmasta.
Tiedot vuotavat RAG-putkistojen läpi säännöllisesti. Hyökkääjää ei tarvita.
Tässä on tyypillinen yritystason RAG-asennus.
Ensin, indeksointi. Indeksoit yrityksen dokumentit vektorivarastoon. Ajattele tukipyyntöjä, asiakassähköposteja, sopimuksia ja HR-tietueita.
Yleisiä vektorivarastoja ovat Pinecone, Weaviate ja pgvector.
Seuraavaksi, haku. Käyttäjä esittää kysymyksen. Järjestelmä noutaa viisi osuvinta palaa varastosta.
Sitten, generointi. Nämä palat lähetetään LLM:lle — GPT-4o:lle, Claudelle tai Geminille — kontekstina.
Vaihe kaksi on ongelma. Haetut palat sisältävät kaiken, mitä lähde-dokumentit sisälsivät. Tähän kuuluu:
- Asiakkaiden nimet, sähköpostiosoitteet ja puhelinnumerot
- Sopimusarvot, tilinumerot ja verotunnisteet
- Työntekijöiden palkkatiedot ja suoritusarviointimuistiinpanot
- Potilaiden nimet kliinisissä muistiinpanoissa
- Kansalliset tunnistenumerot maahanmuuttoasiakirjoissa
Nämä tiedot lähetetään LLM:lle sellaisenaan. Ne voivat ilmaantua mallin tulosteeseen.
LLM-palveluntarjoaja kirjaa ne. Ne säilyvät keskusteluhistoriassasi. Ne virtaavat havainnointipinoon.
Hyökkäystä ei tarvita. Näin RAG toimii suunnittelun mukaan. Suunnittelu luo todellisen yksityisyysriskin.
68 salaisuusmallia yrityksen dokumenttivarastoissa
Tietoturvatyökalut seuraa 68 tunnettua salaisuusmallia. Ne esiintyvät useammin kuin tiimit odottavat.
Tässä ovat yleisimmät.
- AWS Access Key ID:t (
AKIA...) - OpenAI API-avaimet (
sk-...) - Anthropic API-avaimet (
sk-ant-...) - Tietokantaurlit (
postgresql://user:password@host/db) - JWT-tokenit (base64-koodatut otsikot)
- GitHub Personal Access Token -avaimet
- Stripe-salaiset avaimet (
sk_live_...) - SendGrid API-avaimet
- Twilio-tilin SID:t ja todennustokenit
- Yksityisavain PEM-lohkot
Tukipyyntö voi sisältää asiakkaan API-avaimen virheenkorjausistunnosta.
Sopimus voi sisältää tietokantakredentiaalit teknisestä luovutuksesta.
Vahingossa indeksoitu konfigurointitiedosto voi paljastaa koko salaisuusvaraston.
Kun nämä tiedostot siirtyvät vektorivarastoon ilman sanitointia, jokainen kysely voi välittää salaisuudet LLM:lle.
Ne voivat tavoittaa loppukäyttäjänkin.
Korjaus: Anonymisoi ennen upottamista
Oikea lähestymistapa anonymisoi dokumentit ennen paloittelua ja upottamista.
Tämä vaihe vaaditaan miltä tahansa järjestelmältä, joka käsittelee asiakastietoja.
Tässä on Python-esimerkki käyttäen anonym.legal API:a:
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]:
"""Anonymisoi PII ennen upottamista."""
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):
"""Rakenna RAG-indeksi vain puhtaista dokumenteista."""
anonymized_docs = []
for doc in documents:
clean_text, entities = anonymize_before_embedding(doc)
anonymized_docs.append(clean_text)
print(f"Poistettu {len(entities)} PII-entiteettiä dokumentista")
vectorstore.add_texts(anonymized_docs)
anonym.legal API kattaa 285+ entiteettityyppiä. Nimet, sähköpostiosoitteet, puhelinnumerot, kansalliset tunnisteet, API-avaimet ja tietokantaurlit kaikki havaitaan.
Mikään arkaluonteinen ei tavoita vektorivarastoa. Joten mikään arkaluonteinen ei voi vuotaa käyttäjille.
Katso kehittäjäoppaasta LangChain- ja LlamaIndex-asetusmallit.
Korjaa CVE-2025-68664 heti nyt
Jos käytät LangChainia alla version 0.3.22, päivitä nyt:
pip install "langchain>=0.3.22" "langchain-core>=0.3.22"
Päivityksen jälkeen tarkista ketjukonfiguraatiosi injektioriskin varalta. Tässä on kolme toimenpidettä.
Ensin, validoi haetut palat. Tee tämä ennen kuin ne saavuttavat LLM:n.
Poista sisältö, joka vastaa injektiomalleja kuten ignore previous instructions, system: tai <INST>.
Toiseksi, anonymisoi ennen upottamista. Tämä pienentää hyökkäyspinta-alaa.
Jos injektio tapahtuu, arkaluonteisia tietoja ei ole siellä poimittavissa.
Kolmanneksi, rajoita ketjuoikeuksia. LangChain-ketjujen ei pitäisi lukea ympäristömuuttujia enemmän kuin ne tarvitsevat.
Käytä palvelutiliä minimaalisella laajuudella.
Matematiikka on yksinkertainen
CVSS-pistemäärä on 9,3. Korjaus on yksi API-kutsu dokumenttia kohti.
CVE-2025-68664:n ja yleisen RAG-datriskin yhdistelmä on todellinen riski.
Ratkaisu on selvä: anonymisoi indeksointivaiheessa, ei kyselyaikana.
Tarkista tietoturva- ja vaatimustenmukaisuusyleiskatsaus yritystason RAG-vaatimuksille.
Lähteet
- NVD CVE-2025-68664, CVSS 9,3, LangChainin serialisointihaavoittuvuus
- LangChainin tietoturvailmoitus, langchain-ai/langchain GitHub, 2025
- OWASP LLM Top 10: LLM01 Kehotteen injektio, LLM06 Arkaluonteisten tietojen paljastuminen
- anonym.legal entiteettityyppidokumentaatio — yli 285 tuettua entiteettityyppiä