В CMS Joomla обнаружена критическая 0-day уязвимость

Во вторник 14 декабря команда разработки Joomla выпустила срочное обновление безопасности, закрывающее 0-day уязвимость, которая открывает злоумышленникам возможность удаленного исполнения кода. Хакеры уже активно пытаются атаковать уязвимые сайты.

Ошибка уже эксплуатируется киберпреступниками — исследователям удалось обнаружить свидетельства успешных попыток ее использования еще 12 декабря. В лог-файлах веб-серверов скомпрометированных сайтов присутствовали следующие строки:

2015 Dec 12 16:49:07 clienyhidden.access.log Src IP: 74.3.170.33 / CAN / Alberta 74.3.170.33 – – [12/Dec/2015:16:49:400500] “GET /contact/ HTTP/1.1403 5322 “http://google.com/” “}__test|O:21:\x22JDatabaseDriverMysqli\x22:3: .. {s:2:\x22fc\x22;O:17:\x22JSimplepieFactory\x22:0: .. {}s:21:\x22\x5C0\x5C0\x5C0disconnectHandlers\x22;a:1:{i:0;a:2:{i:0;O:9:\x22SimplePie\x22:5:.. {s:8:\x22sanitize\x22;O:20:\x22JDatabaseDriverMysql\x22:0:{}s:8:\x22feed_url\x22;s:60:..

В коде обработчика сессий Joomla пристутствует уязвимость, которая позволяет осуществить внедрение строки в синтаксис сериализованной сессии через HTTP-заголовки User-Agent и X-Forwarded-For. Эксплоит использует особенность MySQL при обработке utf8-символов из диапазона U+010000 — U+10FFFF. При вставке строки, в конце которой присутствует такой символ, MySQL обрежет данные. Это позволяет сформировать и записать в таблицу сессий строку, в которой присутствуют пользовательские PHP-объекты, без нарушения синтаксиса. В ходе десериализации сессии атакующего вызываются деструкторы классов Joomla, что ведет к выполнению произвольного кода​. Для того, чтобы данные не обрезались, в MySQL необходимо использовать кодировку utf8mb4​.

Joomla 1.5 была выпущена в январе 2008 года — это означает, что уязвимость присутствует в этой и более поздних версиях системы уже почти на протяжении восьми лет. В настоящий момент нет данных о том, какое количество сайтов и веб-ресурсов были скомпрометированы вследствие эксплуатации этой бреши.

Как защититься

Уязвимость распространяется на версии Joomla 1.5 по 3.4.5 включительно. Всем пользователям CMS необходимо обновить свою систему — сделать это можно здесь. Пользователям старых неподдерживаемых версий 1.5.x и 2.5.x следует установить патчи, доступные по ссылке (инструкция по использованию фиксов представлена на английском языке здесь).

В качестве временной меры предосторожности исследователи Sucuri рекомендуют заменять потенциально опасные данные в заголовке HTTP User-Agent. Ниже представлен пример конфигурации для веб-сервера Apache:

RewriteCond %{HTTP_USER_AGENT} .*\{.* [NC]

RewriteRule .* - [F,L]

Исследователи безопасности не в первый раз находят уязвимости в CMS Joomla. В октябре 2015 года была выпущена версия системы 3.4.5, в которой были устранены серьезные уязвимости (CVE-2015-7297, CVE-2015-7857, CVE-2015-7858), которые открывали злоумышленникам возможности, в том числе и осуществления SQL-инъекций.

Теги: