Крупная уязвимость в WordPress и Drupal может положить сайт
Нир Гольдшлегер, исследователь безопасности из Salesforce.com, обнаружил XML-уязвимость в WordPress и Drupal, пишет Mashable.
XML Quadratic Blowup Attack похожа на атаку Billion Laughs, которая может позволить очень небольшому XML-документу полностью нарушить работу сервисов на машине в считанные секунды. Quadratic Blowup Attack вместо использования вложенных объектов внутри XML-документа просто повторяет одну большую запись с десятками тысяч символов снова и снова.При этом типе атаки XML-документ размером несколько сотен килобайт может в конечном итоге занять сотни мегабайт или даже гигабайт памяти. Это легко положит весь сайт или веб-сервер. По словам Гольдшлегера:
<?xml version="1.0"?>
<!DOCTYPE DoS [
<!ENTITY a "xxxxxxxxxxxxxxxxx...">
]>
<DoS>&x;&x;&x;&x;&x;&x;&x;&x;&x;...</DoS>
</code>
«Если злоумышленник определяет длину сущности &x; в 55 тысяч символов и ссылается на эту сущность 55 тысяч раз внутри DoS-элемента, парсер сталкивается с нагрузкой атаки XML Quadratic Blowup чуть более 200 КБ в размере, которая расширяется до 2,5 ГБ при парсинге. Этого расширения будет достаточно, чтобы убить процесс парсинга».
В PHP по умолчанию стоит предел выделения памяти 128 Мб для каждого процесса, то есть теоретически вы не можете превысить предел 128 МБ XML-бомбой. Однако в веб-сервере Apache параметр «Max Clients» по умолчанию равняется 256, а в базе данных MySQL параметр «Max Connections» по умолчанию установлен на 151. Если мы умножим эти соединения друг против друга (128×151), получаем 19328 МБ — которые будут потреблять всю доступную память.
Чтобы успешно атаковать сервер, злоумышленник должен определить предел доступной памяти на сервере жертвы. Если атака превысит PHP-лимит, сервер отклонит превышение, что сделает атаку безуспешной. Однако успешная атака в результате вернёт введенную нагрузку и положит систему: