Во вторник 14 декабря команда разработки Joomla выпустила срочное обновление безопасности, закрывающее 0-day уязвимость, которая открывает злоумышленникам возможность удаленного исполнения кода. Хакеры уже активно пытаются атаковать уязвимые сайты.
Что случилось
По сообщению ИБ-компании Sucuri, эта ошибка уже эксплуатируется киберпреступниками — исследователям удалось обнаружить свидетельства успешных попыток ее использования еще 12 декабря. В лог-файлах веб-серверов скомпрометированных сайтов присутствовали следующие строки:
В коде обработчика сессий Joomla пристутствует уязвимость, которая позволяет осуществить внедрение строки в синтаксис сериализованной сессии через HTTP-заголовки User-Agent и X-Forwarded-For. Эксплоит использует особенность MySQL при обработке utf8-символов из диапазона U+010000 — U+10FFFF. При вставке строки, в конце которой присутствует такой символ, MySQL обрежет данные. Это позволяет сформировать и записать в таблицу сессий строку, в которой присутствуют пользовательские PHP-объекты, без нарушения синтаксиса. В ходе десериализации сессии атакующего вызываются деструкторы классов Joomla, что ведет к выполнению произвольного кода. Для того, чтобы данные не обрезались, в MySQL необходимо использовать кодировку utf8mb4.
Как заявляют исследователи Sucuri, обнаруженные атаки осуществлялись со следующих IP-адресов:
14 декабря число попыток эксплуатации серьезно увеличилось — все «ловушки» (honeypot), созданные исследователями, были неоднократно атакованы.
Удаленное выполнение кода с помощью уязвимости Joomla
Участники сообщества пользователей фреймворка Metasploit на GitHub в режиме реального времени занимаются написанием эксплойта к обнаруженной уязвимости Joomla. По последним сообщениям участникам удалось создать работающий модуль для эксплуатации уязвимости:
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]
Кроме того, эксперты Positive Technologies рекомендуют использовать специализированные средства защиты от киберугроз — к примеру, межсетевой экран прикладного уровня PT Application Firewall успешно отражает возможные попытки эксплуатации указанной уязвимости:
Исследователи безопасности не в первый раз находят уязвимости в CMS Joomla. В октябре 2015 года была выпущена версия системы 3.4.5, в которой были устранены серьезные уязвимости (CVE-2015-7297, CVE-2015-7857, CVE-2015-7858), которые открывали злоумышленникам возможности, в том числе и осуществления SQL-инъекций.
Напомним также, что использование CMS с открытым кодом – вовсе не гарантия безопасности, если вы не проверяли эти коды на уязвимости. В прошлом году эксперты Positive Technologies, используя анализатор кодов PT Application Inspector, нашли множество багов в нескольких популярных CMS с открытым кодом, включая Joomla, Shopos, Yii и Jahia, а также в плагинах для Wordress. Разбор одного такого исследования, с уязвимостями системы InstantCMS, мы публиковали в начале года.
Что случилось
По сообщению ИБ-компании Sucuri, эта ошибка уже эксплуатируется киберпреступниками — исследователям удалось обнаружить свидетельства успешных попыток ее использования еще 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:40 -0500] “GET /contact/ HTTP/1.1″ 403 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.
Как заявляют исследователи Sucuri, обнаруженные атаки осуществлялись со следующих IP-адресов:
- 74.3.170.33 (12 декабря);
- 146.0.72.83 (13 декабря);
- 194.28.174.106 (13 декабря);
14 декабря число попыток эксплуатации серьезно увеличилось — все «ловушки» (honeypot), созданные исследователями, были неоднократно атакованы.
Удаленное выполнение кода с помощью уязвимости Joomla
Участники сообщества пользователей фреймворка Metasploit на GitHub в режиме реального времени занимаются написанием эксплойта к обнаруженной уязвимости Joomla. По последним сообщениям участникам удалось создать работающий модуль для эксплуатации уязвимости:
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]
Кроме того, эксперты Positive Technologies рекомендуют использовать специализированные средства защиты от киберугроз — к примеру, межсетевой экран прикладного уровня PT Application Firewall успешно отражает возможные попытки эксплуатации указанной уязвимости:
Исследователи безопасности не в первый раз находят уязвимости в CMS Joomla. В октябре 2015 года была выпущена версия системы 3.4.5, в которой были устранены серьезные уязвимости (CVE-2015-7297, CVE-2015-7857, CVE-2015-7858), которые открывали злоумышленникам возможности, в том числе и осуществления SQL-инъекций.
Напомним также, что использование CMS с открытым кодом – вовсе не гарантия безопасности, если вы не проверяли эти коды на уязвимости. В прошлом году эксперты Positive Technologies, используя анализатор кодов PT Application Inspector, нашли множество багов в нескольких популярных CMS с открытым кодом, включая Joomla, Shopos, Yii и Jahia, а также в плагинах для Wordress. Разбор одного такого исследования, с уязвимостями системы InstantCMS, мы публиковали в начале года.