Миллиард смеется атака - Billion laughs attack

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

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

подробности

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

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

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

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

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

Пример кода

<?xml версия ="1.0"?> лолз [  ржунимагу "ржунимагу">  лолз (#PCDATA)>  lol1 "& lol; & lol; & lol; & lol; & lol; & lol; & lol; & lol; & lol; & lol;">  лол2 "& lol1; & lol1; & lol1; & lol1; & lol1; & lol1; & lol1; & lol1; & lol1; & lol1;">  лол3 "& lol2; & lol2; & lol2; & lol2; & lol2; & lol2; & lol2; & lol2; & lol2; & lol2;">  lol4 "& lol3; & lol3; & lol3; & lol3; & lol3; & lol3; & lol3; & lol3; & lol3; & lol3;">  лол5 "& lol4; & lol4; & lol4; & lol4; & lol4; & lol4; & lol4; & lol4; & lol4; & lol4;">  лол6 "& lol5; & lol5; & lol5; & lol5; & lol5; & lol5; & lol5; & lol5; & lol5; & lol5;">  лол7 "& lol6; & lol6; & lol6; & lol6; & lol6; & lol6; & lol6; & lol6; & lol6; & lol6;">  лол8 "& lol7; & lol7; & lol7; & lol7; & lol7; & lol7; & lol7; & lol7; & lol7; & lol7;">  лол9 "& lol8; & lol8; & lol8; & lol8; & lol8; & lol8; & lol8; & lol8; & lol8; & lol8;">]><лолз>& lol9;>

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

Вариации

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

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

а: и ["ржунимагу","ржунимагу","ржунимагу","ржунимагу","ржунимагу","ржунимагу","ржунимагу","ржунимагу","ржунимагу"]б: & b [* а,* а,* а,* а,* а,* а,* а,* а,* а]c: & c [* б,* б,* б,* б,* б,* б,* б,* б,* б]d: & d [* c,* c,* c,* c,* c,* c,* c,* c,* c]е: и е [* d,* d,* d,* d,* d,* d,* d,* d,* d]ж: & е [* е,* е,* е,* е,* е,* е,* е,* е,* е]г:  [* f,* f,* f,* f,* f,* f,* f,* f,* f]час: &час [,,,,,,,,]я:  [*час,*час,*час,*час,*час,*час,*час,*час,*час]

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

Смотрите также

использованная литература

  1. ^ а б Гарольд, Эллиотт Расти (27 мая 2005 г.). «Совет: настройте парсеры SAX для безопасной обработки». IBM developerWorks. Архивировано из оригинал 4 марта 2011 г.. Получено 4 марта 2011.
  2. ^ Салливан, Брайан (ноябрь 2009 г.). «Атаки и защита XML Denial of Service». Журнал MSDN. Корпорация Майкрософт. Получено 2011-05-31.
  3. ^ «SecurityFocus». 2002-12-16. Получено 2015-07-03.
  4. ^ "CVE-2003-1564". Распространенные уязвимости и подверженности. Корпорация МИТЕР. 2003-02-02. Получено 2011-06-01.
  5. ^ Брайан Салливан. «Атаки и защита XML Denial of Service». Получено 2011-12-21.
  6. ^ https://docs.python.org/2/library/xml.html#xml-vulnerabilities
  7. ^ https://github.com/kubernetes/kubernetes/issues/83253
  8. ^ http://www.cio.com/article/3082084/web-development/xml-is-toast-long-live-json.html