Представлена техника совершения DoS-атаки через отправку PNG-бомбы

Представлена техника совершения DoS-атаки через отправку PNG-бомбы

Представлена техника совершения DoS-атаки через отправку PNG-бомбы

В старые времена были популярны zip-бомбы и рекурсивные архивы, которые распаковываются сами в себя. Zip-бомбу иногда можно использовать для DoS-атаки. Например, пресловутый файл 42.zip имеет размер 42 килобайта. Если начать его распаковку, то процесс будет идти до тех пор, пока набор данных не достигнет верхнего предела распаковки в 4,3 гигабайта.

При этом процесс займет более 4,5 петабайт в оперативной памяти (4 503 599 626 321 920 байт).

Программист и хакер Дэвид Фифилд (David Fifield) задумался, где ещё можно применить «архивные бомбы». Сразу на ум приходит графический формат PNG, в котором используется алгоритм сжатия DEFLATE в библиотеке zlib.

Каков будет максимальный размер картинки с минимальным размером файла? Идея в том, чтобы файл можно было быстро скачать из интернета, но при этом он не поместился в оперативную память на персональном компьютере, пишет xakep.ru.

Автор поэкспериментировал с разными вариантами и вот что у него получилось.

spark.png.bz2 (420 байт)

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

Затем за дело берётся bzip2, который сжимает длинный набор одинаковых значений в максимально компактный вид.

В архиве на 420 байт — файл PNG размером 6 132 534 байт (5,8 МБ) и изображением 225 000 х 225 000 пикселей (50,625 гигапикселей). В пиксельном буфере с тремя байтами на пиксель картинка займёт примерно 141,4 ГБ.

Картинка почти полностью состоит из нулей, с секретным сообщением в центре. Для лучшего сжатия используется однобитное цветовое пространство, хотя большинство программ для рендеринга графики всё равно резервируют по три бита на пиксель и разворачивают картинку в 141,4 гигабайта.

В дальнейших планах автора:

1) закачать свою аватару в формате PNG в разные онлайновые сервисы, сломав скрипты обработки изображений;

2) установить новый фавикон на сайте.

Новая атака на кеш Nginx позволяет красть данные и ломать сайты

Исследователь YesWeHack Алекс Брумен описал вектор кибератаки Cache Key Injection. В случае её эксплуатации последствия для потенциальной жертвы опасные: обход контроля доступа, раскрытие закрытых страниц, отказ в обслуживании и при определённых условиях.

Как объясняет исследователь YesWeHack, проблема возникает не в Nginx по умолчанию, а в конфигурациях, где администраторы просто склеивают несколько значений переменной длины без разделителей. Например:

$scheme$host$request_uri$http_accept

Разных запроса два, а итоговая строка может получиться одна. Так, запрос к /h с заголовком Accept: ome*/* создаёт тот же ключ, что и обычное обращение к /home с Accept: */*.

Если атакующий успеет первым положить в кеш ответ 404, пользователи вместо главной страницы будут получать ошибку до очистки записи. Получается CPDoS — отказ в обслуживании с доставкой прямо из кеша.

 

Ещё веселее становится с закрытыми разделами. В лабораторном примере страница /admin была доступна только с localhost, но злоумышленник мог обратиться к /ad и перенести оставшуюся часть имени в соседний компонент ключа. Nginx видел разрешённый путь, однако доставал из кеша содержимое админ-панели.

При совпадении нескольких условий техника позволяет столкнуть HTTP- и HTTPS-запросы и записать в кеш страницу со ссылкой на атакующий JavaScript, превратив ошибку конфигурации в stored XSS. Даже Cloudflare не всегда спасёт: заголовок Authorization может провести запрос мимо его кеша прямо к уязвимому кешу Nginx.

 

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

$scheme|$host|$request_uri|$http_accept

Также следует проверять Host, перенаправлять HTTP на HTTPS и не кешировать аутентифицированные запросы.

RSS: Новости на портале Anti-Malware.ru