XML External Entity (XXE)

From DefacerID Encyclopedia
Revision as of 00:16, 9 August 2024 by DefacerID (talk | contribs) (Created page with "thumb|'''XML external entity ('''https://www.acunetix.com/blog/articles/xml-external-entity-xxe-vulnerabilities/''')''' '''XML External Entity (XXE)''' adalah jenis kerentanan keamanan yang muncul dari cara pemrosesan data XML yang tidak aman. XXE dapat mengekspos sistem terhadap berbagai risiko, termasuk pembocoran data, serangan denial-of-service (DoS), dan RCE. == Sejarah == Kerentanan XXE pertama kali diidentifikasi dan diekspl...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
XML external entity (https://www.acunetix.com/blog/articles/xml-external-entity-xxe-vulnerabilities/)

XML External Entity (XXE) adalah jenis kerentanan keamanan yang muncul dari cara pemrosesan data XML yang tidak aman. XXE dapat mengekspos sistem terhadap berbagai risiko, termasuk pembocoran data, serangan denial-of-service (DoS), dan RCE.

Sejarah

Kerentanan XXE pertama kali diidentifikasi dan dieksploitasi pada awal 2000-an. Seiring dengan perkembangan teknologi dan adopsi XML dalam berbagai aplikasi web dan sistem, kerentanan ini menjadi semakin relevan. XXE muncul ketika pemrosesan dokumen XML memungkinkan entitas eksternal untuk diakses atau diproses tanpa pengamanan yang memadai.

Cara Kerja XXE

Kerentanan XXE terjadi ketika aplikasi yang memproses XML memperbolehkan referensi entitas eksternal yang dapat menyebabkan eksekusi atau akses data yang tidak diinginkan. Sebagai contoh, jika aplikasi menerima dokumen XML yang berisi referensi entitas eksternal, dan server XML memproses referensi tersebut, data sensitif atau file sistem dapat diakses atau diungkapkan.

Contoh HTTP Request

Misalkan aplikasi menerima dokumen XML berikut:

<!DOCTYPE foo [

  <!ENTITY xxe SYSTEM "file:///etc/passwd">

]>

<root>

  <name>&xxe;</name>

</root>


Jika aplikasi memproses dokumen ini dengan tidak aman, isi dari file /etc/passwd dapat diakses dan dimasukkan dalam respons HTTP, menyebabkan kebocoran data sensitif.

Dampak

Kerentanan XXE dapat memiliki berbagai dampak, tergantung pada bagaimana dan di mana kerentanan ini dieksploitasi:

  • Pembocoran Data: Informasi sensitif dari file sistem atau data internal dapat diakses dan diungkapkan.
  • Denial-of-Service (DoS): Penyerang dapat menyebabkan aplikasi atau sistem menjadi tidak responsif dengan mengirimkan dokumen XML yang berisi referensi entitas besar atau berulang.
  • RCE: Dalam beberapa kasus, XXE dapat digunakan untuk mengeksploitasi sistem dan menjalankan kode berbahaya.

Cara Mencegah XXE

PHP

Untuk mencegah kerentanan XXE di PHP, pastikan untuk menonaktifkan pemrosesan entitas eksternal saat menggunakan parser XML. Berikut adalah contoh cara melakukannya dengan DOMDocument:

$doc = new DOMDocument();

$doc->loadXML($xmlData, LIBXML_NOENT | LIBXML_DTDLOAD);

Dalam kode di atas, LIBXML_NOENT dan LIBXML_DTDLOAD digunakan untuk menghindari pemrosesan entitas eksternal.

Java

Di Java, Anda dapat mencegah XXE dengan menonaktifkan pemrosesan entitas eksternal pada parser XML. Contoh penggunaan DocumentBuilderFactory:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.parse(new InputSource(new StringReader(xmlData)));

Pengaturan http://apache.org/xml/features/disallow-doctype-decl memastikan bahwa deklarasi DOCTYPE tidak diproses.

Python

Di Python, saat menggunakan lxml atau xml.etree.ElementTree, pastikan untuk menonaktifkan pemrosesan entitas eksternal. Contoh dengan lxml:

from lxml import etree

parser = etree.XMLParser(resolve_entities=False)

tree = etree.parse(xml_file, parser)

Dengan resolve_entities=False, entitas eksternal tidak akan diproses oleh parser.

Kesimpulan

Entitas Eksternal XML (XXE) adalah kerentanan keamanan yang signifikan yang dapat mengekspos sistem terhadap berbagai risiko, termasuk kebocoran data dan serangan denial-of-service. Dengan memahami cara kerja kerentanan ini dan menerapkan langkah-langkah pencegahan yang sesuai, pengembang dapat melindungi aplikasi dan sistem mereka dari serangan yang dapat memanfaatkan kelemahan dalam pemrosesan XML.