XML External Entity (XXE) Injection

Ağ Güvenliği,Siber Savunma

XML, uzun yıllardır kurumsal entegrasyonlarda ve yapılandırma dosyalarında kullanılan bir veri formatıdır. SOAP servisleri, SAML tabanlı kimlik doğrulama akışları, eski ERP entegrasyonları, bazı doküman formatları ve mesajlaşma altyapıları hâlâ XML’e dayanır. XML’in esnekliği avantajdır; ancak yanlış yapılandırılmış bir XML ayrıştırıcısı (parser), uygulamaya beklenmedik bir okuma/erişim kabiliyeti kazandırabilir.

XXE (XML External Entity) Injection, uygulamanın saldırgan tarafından kontrol edilen XML içeriğini işlerken harici varlıkları (external entities) çözümlemesi sonucunda ortaya çıkar. Etki, yerel dosya okuma (LFI) gibi görünen bir sızıntıdan iç ağ taramasına, servis kimlik bilgisi ifşasına ve bazı koşullarda uzaktan istek tetiklemeye kadar genişleyebilir. Cloud ve mikroservis dünyasında XXE’nin önemi, parser’ın çalıştığı konumun (network reach) ve erişebildiği dosya/servislerin değerinden gelir.

XXE Nedir?

XML’de ‘entity’ kavramı, metin parçalarını veya harici kaynakları bir isim altında tanımlamaya yarar. Parser, XML’i işlerken bu entity’leri çözüp nihai içeriği üretir. Eğer uygulama dış entity çözümlemesini kapatmıyor ve saldırgan XML içeriğine müdahale edebiliyorsa, saldırgan parser’a dış kaynaklardan veri okutan veya ağ isteği yaptıran tanımlar ekleyebilir.

XXE iki şekilde karşımıza çıkar: (1) In-band XXE: Okunan veri doğrudan uygulama yanıtına yansır. (2) Blind/Out-of-band (OOB) XXE: Veri yanıtla dönmez; ancak uygulamanın dışarı yaptığı istekler, zamanlama farkları veya DNS/HTTP etkileşimi üzerinden anlaşılır. OOB, özellikle yanıtın filtrelendiği uygulamalarda kritik hâle gelir.

Yaygın XXE Senaryoları

XXE, genellikle ‘XML kabul eden’ ama güvenli parse etme varsayımını sorgulamayan bileşenlerde ortaya çıkar. En sık rastlanan senaryolar şunlardır:

1) SOAP Tabanlı Web Servisleri:
SOAP istekleri XML tabanlıdır. Eski veya yanlış yapılandırılmış parser’lar, dış entity çözümlemesini açık bırakabilir ve XXE’ye zemin hazırlayabilir.

2) Dosya Yükleme / İçe Aktarma (Import):
Uygulama XML formatında konfigürasyon, rapor veya “data import” dosyası kabul ediyorsa; yüklenen dosya parse edilirken XXE tetiklenebilir.

3) SAML / Federasyon Akışları:
Bazı kimlik doğrulama entegrasyonlarında XML tabanlı assertion’lar işlenir. Parser ayarları güvenli değilse, kimlik katmanında XXE etkisi büyüyebilir.

4) Office/Doküman Türevleri ve XML Bazlı Formatlar:
Bazı dosya türleri (ör. XML içeren arşiv formatları) arka planda parse edildiğinde, uygulama farkında olmadan XXE’ye maruz kalabilir.

5) Mikroservisler Arası XML Mesajlaşma:
İç ağda çalışan servisler, ‘güvenilir ağ’ varsayımıyla XML parse ediyorsa; bir servis ele geçirildiğinde XXE ile iç keşif ve veri sızıntısı mümkün olabilir.

Etkiler ve Risk

XXE’nin etkisi, parser’ın izinlerine ve ağ erişimine göre değişir. Tipik sonuçlar şunlardır:

  • Yerel dosya okuma: Uygulamanın çalıştığı kullanıcı izinleri kapsamında sunucu dosyaları okunabilir.
    • İç ağ keşfi / SSRF benzeri etkiler: Parser üzerinden iç servislere istek tetiklenebilir; port/host keşfi yapılabilir.
    • Hassas bilgi ifşası: Konfigürasyonlar, secret’lar, sertifika dosyaları veya erişim token’ları sızabilir.
    • Hizmet kesintisi (DoS): Bazı entity genişleme saldırıları (billion laughs) kaynak tüketimi yaratabilir.
    • Zincirleme istismar: Okunan veriler, başka bir zafiyetle birleşerek daha büyük etki doğurabilir (ör. credential sızıntısı → yetki yükseltme).

 

 Bu nedenle XXE, sadece ‘eski bir XML problemi’ olarak görülmemeli; özellikle entegrasyon yoğun sistemlerde aktif bir risk olarak yönetilmelidir.

Önleme ve Güvenli Tasarım Adımları

XXE riskini azaltmanın en güvenilir yolu, XML parser’ı güvenli varsayılanlarla çalıştırmak ve harici entity çözümlemesini tamamen kapatmaktır. Uygulanabilir adımlar:

  • Dış entity’leri kapat: Parser’da DTD ve external entity çözümlemesini devre dışı bırak.
    • Güvenli kütüphaneler kullan: Platformun ‘secure processing’ seçeneklerini aç; güncel parser sürümlerini tercih et.
    • XML yerine alternatif formatlar: Mümkünse JSON gibi daha sade formatlara geç; XML’e mecbursan güvenlik profilini standartlaştır.
    • Input doğrulama ve şema: Beklenen yapıyı XSD gibi şema doğrulamasıyla sınırla; beklenmeyen node/alanları reddet.
    • Ağ çıkışını sınırla: Uygulamanın outbound erişimini egress firewall/NetworkPolicy ile kısıtla; OOB XXE etkisini azalt.
    • Dosya erişimlerini azalt: Uygulama hesabını düşük ayrıcalıkla çalıştır; secret’ları dosyada değil güvenli kasa servislerinde tut.
    • Test ve gözlemleme: XML kabul eden endpoint’leri düzenli test et; şüpheli DTD/ENTITY içeren payloadları logla ve alarmla.

 

 Özetle XXE, çoğu zaman tek bir ayarla (external entity kapatma) büyük ölçüde kontrol altına alınabilir. Ancak kalıcı güvenlik için, parser ayarları, ağ politikaları ve düşük ayrıcalık prensibi birlikte uygulanmalıdır.

Tags :
#AppSec,#InjectionAttacks,#SAML,#SiberSavunma,#SOAP,#WebSecurity,#XMLSecurity,#XXE
Share This :

Diğer Yazılar

Bize Soru Sorun

Soru ve görüşleriniz için bizimle iletişime geçebilirsiniz.