EMZETT.
Увійти

XXE: зовнішні сутності XML

Коротко: XXE («XML External Entity») використовує те, що деякі XML-парсери дозволяють посилатися в документі на зовнішні файли чи адреси. Так маніпульований документ може прочитати файли сервера.

Докладніше: XML допускає в оголошенні DOCTYPE так звані сутності (entity), що вказують на файли (file://) чи URL. Парсер із типовими налаштуваннями завантажує їх і підставляє вміст у документ.

Подробиці

  • Наслідки: Читання локальних файлів, запити до внутрішніх служб (SSRF), відмова в обслуговуванні через величезні вкладені сутності («Billion Laughs»).
  • Де трапляється: Скрізь, де приймають XML: інтерфейси SOAP, завантаження SVG, файли Office (DOCX, XLSX — це ZIP з XML), RSS, SAML.
  • Захист: Вимкнути в парсері DTD і зовнішні сутності (у більшості бібліотек це налаштування, наприклад disallow-doctype-decl), використовувати актуальні бібліотеки, за можливості JSON замість XML.
  • Перевірка: Тестові документи із сутностями під час розробки та в тестах, перевірки залежностей.
  • Становище: Входить до списку найчастіших вебризиків (OWASP).

Див. також: SQL-ін’єкція