Tagasi BlogisseTehniline

LangChain CVE-2025-68664: kuidas isikuandmed lekivad teie RAG-torujuhtmest

CVSS 9,3. LangChaini serialiseerimisfunktsioonid paljastavad keskkonna muutujad ja saladused ründaja kontrollitavatele LLM-idele. Kuidas tuvastada ja parandada isikuandmete lekkeid.

March 16, 20268 min lugemist
LangChainRAG pipelineCVEPII leakagedeveloper securityAPI keysLLM security

LangChain CVE-2025-68664: kuidas isikuandmed lekivad teie RAG-torujuhtmest

Uuendatud 2026. aastaks.

  1. 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

Kas olete valmis oma andmeid kaitsma?

Alustage PII anonüümitamist 285+ üksustüübi abil 48 keeles.

About this page

We update this page when our platform or the law changes.

Read our founder note for how we work.

Each change shows up in the timestamp at the top.

Related reading

We follow these rules

  • GDPR (EU 2016/679).
  • ISO/IEC 27001:2022.
  • NIS2 (EU 2022/2555).
  • HIPAA safe harbor under 45 CFR § 164.514(b)(2).

Our promise

We do not sell your data.

We do not train models on your text.

We store your files in Germany.

You can delete your account at any time.

You own your work.

Where we run

Our servers live in Falkenstein, Germany.

We use Hetzner. They hold ISO 27001 certification.

All data stays in the EU.

Backups run every day.

Need help?

Email support@anonym.legal.

We reply within one business day.

How we test

We run a full check suite on every release.

Each surface gets its own sweep script and report.

Human reviewers spot-check the output each week.

We track recall and precision on a labelled set.

Bad runs block the deploy.

What we never do

  • We never sell your information to third parties.
  • We never train models on what you upload.
  • We never keep your work after you delete it.
  • We never share keys with any outside firm.
  • We never run ads inside the product.

Plans in plain words

We sell credits, not seats.

One credit covers one short job.

Long jobs use a few credits each.

You can top up at any time.

Unused credits roll over each month.

Read the plans page for current rates.

Who built this

A small team of engineers and lawyers built this.

We ship from Europe and work in the open.

Our founder note spells out why we started.

Where to start

How the parts fit

A browser add-on cleans text inside Chrome.

A Word plug-in handles drafts in Office.

A small desktop tool works on whole folders.

An agent protocol link feeds large models safely.

All four share one core engine and one rule set.

Words from our team

We started this work after a lunch about cookies.

One friend kept getting odd ads on her phone.

We asked why a court file leaked through a draft.

We sketched the first build on a napkin that week.

By month three we had a tiny demo for a friend.

She used it on her first case the next day.

Common questions we hear

Can the tool read scanned PDFs? Yes, with OCR.

Does it work on long files? Yes, in small chunks.

Can I roll my own rule set? Yes, save it as a preset.

Does it run offline? The desktop build runs offline.

Do you keep my files? No, the cloud build wipes after each run.

Will it learn from my work? No, we never train on inputs.

A short tour of the workflow

Upload a file or paste a snippet of prose.

Pick the entities you want gone from the draft.

Choose a method: replace, mask, hash, encrypt, or redact.

Press run and watch the side panel show each hit.

Skim the result and tweak any rule that misfired.

Save the cleaned file or send it to a teammate.