XML External Entity (XEE) saldırısı, bir uygulamanın XML verilerini işleme biçimindeki zayıflıkları hedef alarak gerçekleştirilen bir tür siber saldırıdır. Bu saldırı, XML belgeleri içerisindeki harici varlıkları (external entities) kötüye kullanarak gerçekleştirilir. XEE saldırıları, saldırganın hedef sistemdeki dosyaları okumasına, yerel hizmetleri kötüye kullanmasına veya DoS (Denial of Service) saldırıları başlatmasına olanak tanıyabilir. Önce XML dosyalarının yapılarını anlayalım.
Revealed content
XML(Extensible Markup Language), veriyi tanımlamak, depolamak ve taşımak için kullanılan esnek ve genişletilebilir bir işaretleme dilidir. XML, insan tarafından okunabilir ve makineler tarafından kolayca işlenebilir olması amacıyla tasarlanmıştır. Veri yapısını etiketler (tags) ve öznitelikler (attributes) kullanarak tanımlar. XML yapısı hakkında daha fazla bilgi için buraya bakın.
XEE Saldırısının İşleyişi
Bu XML belgesi işlendiğinde, "&xxe;" ifadesi "xee" varlığının içeriği ile değiştirilir. Bu durumda, "file:///etc/passwd" yolundaki dosya okunur ve "foo" elemanı içerisine yerleştirilir. Eğer bir uygulama bu XML belgesini işliyorsa ve harici varlık çözümlemeye izin veriyorsa, "/etc/passwd" dosyasının içeriği açığa çıkar. "/etc/passwd" dosyası, Unix tabanlı sistemlerde kullanıcı hesap bilgilerini içerir.
XEE Saldırılarından Korunma Yöntemleri
- XML işlemcilerinde harici varlıkların çözümlemesini devre dışı bırakmak, XEE saldırılarını önlemenin en etkili yoludur.
- XML işlemcilerinin internetten gelen veya iç ağdan gelen isteklerle etkileşime girmesini sınırlamak, saldırı yüzeyini azaltabilir.
- Gelen XML verilerini güvenlik açısından doğrulamak ve beklenmeyen veya kötü niyetli içerikleri filtrelemek.
- XML işlemcilerinde ve ilgili kütüphanelerdeki güvenlik açıklarının yamalarını uygulamak ve güncellemeleri yapmak.
| XML Prolog |
|---|
<?xml version="1.0" encoding="UTF-8"?> |
XEE Saldırısının İşleyişi
XML:
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<foo>&xxe;</foo>
Bu XML belgesi işlendiğinde, "&xxe;" ifadesi "xee" varlığının içeriği ile değiştirilir. Bu durumda, "file:///etc/passwd" yolundaki dosya okunur ve "foo" elemanı içerisine yerleştirilir. Eğer bir uygulama bu XML belgesini işliyorsa ve harici varlık çözümlemeye izin veriyorsa, "/etc/passwd" dosyasının içeriği açığa çıkar. "/etc/passwd" dosyası, Unix tabanlı sistemlerde kullanıcı hesap bilgilerini içerir.
XEE Saldırılarından Korunma Yöntemleri
- XML işlemcilerinde harici varlıkların çözümlemesini devre dışı bırakmak, XEE saldırılarını önlemenin en etkili yoludur.
JavaScript:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
- Gelen XML verilerini güvenlik açısından doğrulamak ve beklenmeyen veya kötü niyetli içerikleri filtrelemek.
- XML işlemcilerinde ve ilgili kütüphanelerdeki güvenlik açıklarının yamalarını uygulamak ve güncellemeleri yapmak.
Bu içeriği görmek için giriş yapın.
Son düzenleme: