Jump to content

Атака миллиарда смеха

(Перенаправлено с «Миллиарда смеха »)

В компьютерной безопасности атака «миллиард смеха» — это тип атаки типа «отказ в обслуживании» (DoS) , направленной на анализаторы XML - документов. [1]

Его также называют XML-бомбой или атакой экспоненциального расширения сущности. [2]

Подробности

[ редактировать ]

Пример атаки состоит из определения 10 сущностей, каждая из которых определяется как состоящая из 10 предыдущих сущностей, при этом документ состоит из одного экземпляра самой большой сущности, которая расширяется до одного миллиарда копий первой сущности.

В наиболее часто цитируемом примере первой сущностью является строка « лол », отсюда и название «миллиард смеха». На момент первого сообщения об этой уязвимости объем компьютерной памяти , используемый миллиардом экземпляров строки «lol», вероятно, превышал объем, доступный процессу синтаксического анализа XML.

Хотя первоначальная форма атаки была нацелена конкретно на парсеры XML, этот термин может быть применим и к аналогичным объектам. [1]

Впервые о проблеме сообщили еще в 2002 году. [3] но начали широко обсуждаться в 2008 году. [4]

Защита от такого рода атак включает ограничение памяти, выделенной в отдельном анализаторе, если потеря документа приемлема, или символическую обработку сущностей и ленивое их расширение только тогда (и в той степени), в которой их содержимое должно быть использовано.

Пример кода

[ редактировать ]
<?xml version="1.0"?>
<!DOCTYPE lolz [
 <!ENTITY lol "lol">
 <!ELEMENT lolz (#PCDATA)>
 <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
 <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
 <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
 <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
 <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
 <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
 <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
 <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
 <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lolz>&lol9;</lolz>

Когда анализатор XML загружает этот документ, он видит, что он включает один корневой элемент «lolz», содержащий текст «&lol9;». Однако "&lol9;" — это определенная сущность, которая расширяется до строки, содержащей десять символов «&lol8;» струны. Каждый "&lol8;" строка — это определенный объект, который расширяется до десяти «&lol7;» струны и так далее. После обработки всех расширений сущностей этот небольшой (< 1 КБ) блок XML фактически будет содержать 10 9 = миллиард «лол», занимающий почти 3 гигабайта памяти. [5]

Вариации

[ редактировать ]

Атака миллиарда смеха, описанная выше, может занять экспоненциальное количество места или времени. Вариант квадратичного расширения вызывает квадратичный рост требований к ресурсам за счет простого повторения большого объекта снова и снова, чтобы избежать контрмер, обнаруживающих сильно вложенные объекты. [6] (Сравнение в теории сложности вычислений различных классов роста см. .)

Атака «миллиард смеха» может существовать для любого формата файла, который может содержать расширения макросов, например, эта бомба YAML :

a: &a ["lol","lol","lol","lol","lol","lol","lol","lol","lol"]
b: &b [*a,*a,*a,*a,*a,*a,*a,*a,*a]
c: &c [*b,*b,*b,*b,*b,*b,*b,*b,*b]
d: &d [*c,*c,*c,*c,*c,*c,*c,*c,*c]
e: &e [*d,*d,*d,*d,*d,*d,*d,*d,*d]
f: &f [*e,*e,*e,*e,*e,*e,*e,*e,*e]
g: &g [*f,*f,*f,*f,*f,*f,*f,*f,*f]
h: &h [*g,*g,*g,*g,*g,*g,*g,*g,*g]
i: &i [*h,*h,*h,*h,*h,*h,*h,*h,*h]

Это привело к сбою более ранних версий Go , поскольку процессор Go YAML (вопреки спецификации YAML) расширяет ссылки, как если бы они были макросами. Процессор Go YAML был модифицирован, чтобы не выполнять синтаксический анализ, если объект результата становится слишком большим.

Корпоративное программное обеспечение, такое как Kubernetes, пострадало от этой атаки через парсер YAML. [7] [8] По этой причине для данных, поступающих из ненадежных источников, предпочтительным является либо анализатор с намеренно ограниченными возможностями (например, StrictYAML), либо форматы файлов, не допускающие ссылок. [9] [ не удалось пройти проверку ]

См. также

[ редактировать ]
  1. ^ Jump up to: а б Гарольд, Эллиотт Расти (27 мая 2005 г.). «Совет: настройте анализаторы SAX для безопасной обработки» . IBM DeveloperWorks . Архивировано из оригинала 5 октября 2010 года . Проверено 4 марта 2011 г.
  2. ^ Салливан, Брайан (ноябрь 2009 г.). «Атаки и защита от отказа в обслуживании XML» . Журнал MSDN . Корпорация Майкрософт . Проверено 31 мая 2011 г.
  3. ^ «БезопасностьФокус» . 16 декабря 2002 г. Архивировано из оригинала 16 апреля 2021 г. Проверено 3 июля 2015 г.
  4. ^ «CVE-2003-1564» . Распространенные уязвимости и риски . Корпорация МИТЕР. 2 февраля 2003 г. Проверено 1 июня 2011 г.
  5. ^ Брайан Салливан. «Атаки и защита от отказа в обслуживании XML» . Проверено 21 декабря 2011 г.
  6. ^ «19.5. Модули обработки XML — документация Python 2.7.18» .
  7. ^ «CVE-2019-11253: анализ JSON/YAML-сервера Kubernetes API уязвим для атаки на исчерпание ресурсов · Проблема № 83253 · kubernetes/Kubernetes» . Гитхаб .
  8. ^ Уоллен, Джек (9 октября 2019 г.). «Уязвимость Kubernetes, вызывающая «миллиард смеха», — это не повод для смеха» . Новый стек .
  9. ^ «XML — это тост, да здравствует JSON» . 9 июня 2016 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8b6c08f13a6adea9912a7122b58235a4__1713506460
URL1:https://arc.ask3.ru/arc/aa/8b/a4/8b6c08f13a6adea9912a7122b58235a4.html
Заголовок, (Title) документа по адресу, URL1:
Billion laughs attack - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)