anonym.legal
Πίσω στο BlogΤεχνικά

LangChain CVE-2025-68664: Πώς Διαρρέουν Προσωπικά Δεδομένα μέσω του RAG Pipeline

Μια κρίσιμη ευπάθεια στο LangChain (CVSS 9.3) εκθέτει κλειδιά API, μυστικά JWT και credentials βάσεων δεδομένων. Μάθετε πώς να ασφαλίσετε το RAG pipeline σας με ανωνυμοποίηση πριν την ενσωμάτωση.

March 16, 20268 λεπτά ανάγνωσης
LangChainRAG pipelineCVEPII leakagedeveloper securityAPI keysLLM security

LangChain CVE-2025-68664: Πώς Διαρρέουν Προσωπικά Δεδομένα μέσω του RAG Pipeline

Ενημερωμένο για το 2026.

Μια κρίσιμη ευπάθεια εντοπίστηκε στο LangChain στα τέλη του 2025. Το CVE είναι CVE-2025-68664. Η βαθμολογία CVSS είναι 9.3 (Κρίσιμη).

Αφορά τον κώδικα σειριοποίησης του LangChain.

Τι Κάνει το CVE-2025-68664

Το LangChain διαθέτει δύο συναρτήσεις σειριοποίησης: dumps() και dumpd(). Μετατρέπουν αντικείμενα Python σε κείμενο.

Η ευπάθεια εντοπίζεται στον χειρισμό κλεισιμάτων (closure handling).

Όταν το LangChain σειριοποιεί ένα callable, καταγράφει το περιβάλλον κλεισίματος.

Ένας εισβολέας που ελέγχει την απόκριση του LLM μπορεί να ενεργοποιήσει τη dumps(). Η συνάρτηση διαβάζει τότε μεταβλητές περιβάλλοντος από τη διεργασία Python.

Το αποτέλεσμα είναι έκθεση δεδομένων. Κλειδιά API, strings σύνδεσης βάσεων δεδομένων, μυστικά JWT και credentials AWS μπορούν να εμφανιστούν στην έξοδο του μοντέλου.

Ένας εισβολέας που εισάγει κείμενο σε ένα έγγραφο πηγής RAG μπορεί να διαβάσει τα production secrets σας.

Επηρεαζόμενες εκδόσεις: LangChain κάτω από 0.3.22 (Python). Η έκδοση 0.3.22 περιέχει τη διόρθωση.

Τα δεδομένα PyPI δείχνουν ευρεία χρήση παλαιότερων εκδόσεων έως τον Μάρτιο του 2026.

Πώς Διαρρέουν Προσωπικά Δεδομένα στα RAG Pipelines

Το CVE-2025-68664 είναι εντυπωσιακό. Αλλά είναι απλώς μια περίπτωση ενός ευρύτερου προβλήματος.

Τα δεδομένα διαρρέουν μέσω RAG pipelines συστηματικά. Δεν χρειάζεται καμία επίθεση.

Να μια τυπική εταιρική ρύθμιση RAG.

Πρώτα, η κατάχωρηση. Ευρετηριάζετε εταιρικά έγγραφα σε ένα vector store. Σκεφτείτε tickets υποστήριξης, emails πελατών, συμβόλαια και αρχεία HR.

Δημοφιλή vector stores είναι τα Pinecone, Weaviate και pgvector.

Στη συνέχεια, η ανάκτηση. Ένας χρήστης υποβάλλει ερώτηση. Το σύστημα ανακτά τα πέντε πιο σχετικά τμήματα από το store.

Έπειτα, η δημιουργία. Αυτά τα τμήματα μεταβιβάζονται σε ένα LLM — GPT-4o, Claude ή Gemini — ως πλαίσιο.

Το δεύτερο βήμα είναι το πρόβλημα. Τα ανακτηθέντα τμήματα περιέχουν ό,τι και τα έγγραφα πηγής. Αυτό περιλαμβάνει:

  • Ονόματα πελατών, διευθύνσεις email και αριθμούς τηλεφώνου
  • Αξίες συμβολαίων, αριθμούς λογαριασμών και φορολογικούς αριθμούς
  • Δεδομένα μισθών υπαλλήλων και σημειώσεις αξιολόγησης απόδοσης
  • Ονόματα ασθενών σε κλινικές σημειώσεις
  • Εθνικούς αριθμούς ταυτότητας σε αρχεία μετανάστευσης

Αυτά τα δεδομένα μεταβιβάζονται στο LLM αυτούσια. Μπορούν να εμφανιστούν στην έξοδο του μοντέλου.

Καταγράφονται από τον πάροχο LLM. Παραμένουν στο ιστορικό συνομιλίας. Ρέουν στο observability stack σας.

Δεν χρειάζεται καμία επίθεση. Έτσι λειτουργεί το RAG εκ σχεδιασμού. Αυτός ο σχεδιασμός δημιουργεί πραγματικό κίνδυνο για την ιδιωτικότητα.

68 Μοτίβα Μυστικών σε Εταιρικές Αποθήκες Εγγράφων

Τα εργαλεία ασφαλείας παρακολουθούν 68 γνωστά μοτίβα μυστικών. Εμφανίζονται πιο συχνά από ό,τι περιμένουν οι ομάδες.

Να τα πιο κοινά.

  • AWS Access Key IDs (AKIA...)
  • Κλειδιά API OpenAI (sk-...)
  • Κλειδιά API Anthropic (sk-ant-...)
  • URIs βάσεων δεδομένων (postgresql://user:password@host/db)
  • Tokens JWT (κεφαλίδες κωδικοποιημένες σε base64)
  • Προσωπικά Tokens Πρόσβασης GitHub
  • Μυστικά κλειδιά Stripe (sk_live_...)
  • Κλειδιά API SendGrid
  • SIDs λογαριασμών Twilio και tokens auth
  • Blocks ιδιωτικών κλειδιών PEM

Ένα ticket υποστήριξης μπορεί να περιέχει ένα κλειδί API πελάτη από μια συνεδρία αποσφαλμάτωσης.

Ένα συμβόλαιο μπορεί να περιλαμβάνει credentials βάσης δεδομένων από μια τεχνική παράδοση.

Ένα αρχείο config που ευρετηριάστηκε κατά λάθος μπορεί να εκθέσει ολόκληρο ένα secrets store.

Όταν αυτά τα αρχεία εισέρχονται σε ένα vector store χωρίς εξυγίανση, κάθε ερώτηση μπορεί να μεταβιβάσει τα μυστικά στο LLM.

Μπορεί να φτάσουν και στον τελικό χρήστη.

Διόρθωση: Ανωνυμοποίηση Πριν την Ενσωμάτωση

Η σωστή προσέγγιση ανωνυμοποιεί τα έγγραφα πριν τον διαχωρισμό σε τμήματα και την ενσωμάτωση.

Αυτό το βήμα είναι υποχρεωτικό για κάθε σύστημα που χειρίζεται δεδομένα πελατών.

Να ένα παράδειγμα Python με χρήση του anonym.legal API:

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 πριν την ενσωμάτωση."""
    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 μόνο με καθαρά έγγραφα."""
    anonymized_docs = []
    for doc in documents:
        clean_text, entities = anonymize_before_embedding(doc)
        anonymized_docs.append(clean_text)
        print(f"Αφαιρέθηκαν {len(entities)} οντότητες PII από το έγγραφο")
    vectorstore.add_texts(anonymized_docs)

Το anonym.legal API καλύπτει 285+ τύπους οντοτήτων. Ονόματα, emails, αριθμοί τηλεφώνου, εθνικά αναγνωριστικά, κλειδιά API και URIs βάσεων δεδομένων ανιχνεύονται όλα.

Τίποτα ευαίσθητο δεν φτάνει στο vector store. Οπότε τίποτα ευαίσθητο δεν μπορεί να διαρρεύσει στους χρήστες.

Δείτε τον οδηγό προγραμματιστή για μοτίβα ρύθμισης LangChain και LlamaIndex.

Διόρθωση του CVE-2025-68664 Τώρα

Αν χρησιμοποιείτε LangChain κάτω από 0.3.22, ενημερώστε αμέσως:

pip install "langchain>=0.3.22" "langchain-core>=0.3.22"

Μετά την επιδιόρθωση, ελέγξτε τις ρυθμίσεις της αλυσίδας σας για κίνδυνο έγχυσης. Να τρία βήματα που πρέπει να ακολουθήσετε.

Πρώτον, επικυρώστε τα ανακτηθέντα τμήματα. Κάντε το αυτό πριν φτάσουν στο LLM.

Αφαιρέστε περιεχόμενο που ταιριάζει με μοτίβα έγχυσης όπως ignore previous instructions, system: ή <INST>.

Δεύτερον, ανωνυμοποιήστε πριν την ενσωμάτωση. Αυτό συρρικνώνει την επιφάνεια επίθεσης.

Αν συμβεί έγχυση, τα ευαίσθητα δεδομένα δεν βρίσκονται εκεί για εξαγωγή.

Τρίτον, περιορίστε τα δικαιώματα της αλυσίδας. Οι αλυσίδες LangChain δεν πρέπει να διαβάζουν μεταβλητές περιβάλλοντος πέρα από αυτές που χρειάζονται.

Χρησιμοποιήστε λογαριασμό υπηρεσίας με ελάχιστες δικαιοδοσίες.

Τα Μαθηματικά Είναι Απλά

Η βαθμολογία CVSS είναι 9.3. Η διόρθωση είναι μία κλήση API ανά έγγραφο.

Ο συνδυασμός του CVE-2025-68664 και του γενικού κινδύνου δεδομένων RAG αποτελεί πραγματική ευθύνη.

Η λύση είναι ξεκάθαρη: ανωνυμοποίηση κατά την κατάχωρηση, όχι κατά τον χρόνο ερώτησης.

Ελέγξτε την επισκόπηση ασφάλειας και συμμόρφωσης για απαιτήσεις εταιρικού RAG.

Πηγές

  • NVD CVE-2025-68664, CVSS 9.3, ευπάθεια σειριοποίησης LangChain
  • Συμβουλευτικό ασφαλείας LangChain, langchain-ai/langchain GitHub, 2025
  • OWASP LLM Top 10: LLM01 Prompt Injection, LLM06 Sensitive Information Disclosure
  • Τεκμηρίωση τύπων οντοτήτων anonym.legal — 285+ υποστηριζόμενοι τύποι οντοτήτων

Έτοιμοι να προστατεύσετε τα δεδομένα σας;

Ξεκινήστε την ανωνυμοποίηση PII με 285+ τύπους οντοτήτων σε 48 γλώσσες.

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.