Зовнішня сутність XML
Зовнішня сутність XML (XXE) - це тип уразливості, що виникає, коли парсер XML неправильно налаштований і дозволяє посилатися на зовнішні сутності в XML-документах. Це може дозволити зловмиснику маніпулювати XML-даними, які обробляються програмою, для виконання несанкціонованих дій, таких як доступ до конфіденційних файлів, проведення атак типу “відмова в обслуговуванні” (DoS) або запуск інших видів зловмисної поведінки.
Тестування на наявність XXE уразливостей:
- Перевірка тестових даних: Під час тестування спробуйте ввести вхідні дані у форматі XML, що містять посилання на зовнішні об’єкти, наприклад,
<!ENTITY xxe SYSTEM "file:///etc/passwd">. Поспостерігайте, чи правильно програма обробляє ці посилання і чи запобігає доступу до несанкціонованих ресурсів. - Тест на розкриття файлів: Перевірте, чи може програма розкривати конфіденційні файли (наприклад,
/etc/passwd,/proc/self/environабо інші конфігураційні файли) за допомогою зовнішніх об’єктів у вхідних даних XML. - Тест на відмову в обслуговуванні: Перевірте відмовостійкість програми, надсилаючи XML-документи, які змушують парсер завантажувати великі файли або запускати нескінченну рекурсію. Це допомагає визначити, чи вразливий додаток до DoS-атак через XXE.
- Тест на SSRF: Перевірте, чи дозволяє додаток зовнішнім суб’єктам робити запити до внутрішніх сервісів. Це можна зробити, ввівши XML-дані, які вказують на внутрішні ресурси, наприклад,
http://localhost:8080/internal-service. - Нечітке тестування: Використовуйте інструменти нечіткого тестування для створення широкого спектру шкідливих XML-документів, щоб перевірити їх на наявність XXE-уразливостей та інших вразливостей, пов’язаних з XML. Це допомагає гарантувати, що програма безпечно обробляє граничні випадки.
Усунення уразливостей зовнішніх об’єктів XML (XXE):
- Вимкніть обробку зовнішніх сутностей: Найефективнішим способом усунення XXE уразливостей є вимкнення здатності аналізатора XML обробляти зовнішні об’єкти. Це можна зробити, налаштувавши парсер XML на ігнорування зовнішніх сутностей і DTD (Document Type Definitions - визначення типу документа).
- Використовуйте безпечні парсери XML: Переконайтеся, що парсер XML, який використовується в додатку, налаштований на запобігання XXE-атакам. Багато сучасних парсерів XML, наприклад, ті, що використовуються в Java (наприклад,
javax.xml.parsers.DocumentBuilderFactory), пропонують опції конфігурації для вимкнення зовнішньої обробки сутностей. - Перевірка вхідних даних: Належним чином перевіряйте та знезаражуйте всі вхідні дані користувача, включно з XML-документами, щоб унеможливити потрапляння до програми зловмисних XML-об’єктів.
- Використання альтернативних форматів даних: Розгляньте можливість використання форматів даних, відмінних від XML, таких як JSON, які не підтримують зовнішні сутності і менш схильні до цього типу атак.
- Обробка помилок: Впровадьте належну обробку помилок та ведення журналу для виявлення незвичної поведінки або підозрілих вхідних даних у форматі XML. Це може допомогти у виявленні спроб використання XXE-уразливостей.





