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-ін’єкція