Владельцам сайтов на базе популярной системы управления контентом Joomla, использующим расширения с фреймворком Novarain (позже переименованным в Tassos), настоятельно рекомендуется срочное обновление. Анализ исходного кода выявил несколько критических уязвимостей, которые в совокупности позволяют злоумышленнику без каких-либо привилегий получить контроль над сайтом и выполнить произвольный код на сервере. Это классический сценарий удаленного выполнения кода (Remote Code Execution, RCE), представляющий экстремальный риск для любого интернет-ресурса, использующего затронутые компоненты.
Детали уязвимости
Проблема затрагивает ряд широко распространенных расширений, которые включают в себя один и тот же системный плагин "plg_system_nrframework". Среди них - Convert Forms для создания форм, EngageBox для всплывающих окон, Google Structured Data для разметки, Advanced Custom Fields для настраиваемых полей и Smile Pack с набором дополнительных функций. Исследование, проведенное независимым специалистом по безопасности p1r0x при содействии SSD Secure Disclosure, выявило три базовые примитивные уязвимости, которые могут быть использованы последовательно, образуя полноценную цепочку атаки. Речь идет о возможности чтения любых файлов на сервере, их удаления и внедрения SQL-кода (SQL injection) для произвольного чтения базы данных.
Корень проблемы лежит в архитектуре обработки AJAX-запросов внутри фреймворка. В частности, обработчик задачи "include" позволяет злоумышленнику загружать и исполнять произвольные PHP-классы из-под корневой директории сайта Joomla, при условии что в них есть метод "onAjax". Это фундаментально нарушает принцип минимальных привилегий, значительно расширяя поверхность атаки за пределы, допустимые для публичного интерфейса. Именно через эту лазейку активируются три опасные функции в различных полях фреймворка, ведущие к критическим последствиям.
Первая уязвимость, обнаруженная в обработчике цепочечных полей ("nrchainedfields.php"), связана с некорректной проверкой типа загружаемого файла при обработке данных в формате CSV. Вместо строгой валидации, злоумышленник может указать путь к любому системному файлу, к которому имеет доступ пользователь веб-сервера, что приводит к утечке его содержимого. Это может включать конфигурационные файлы с паролями, логины и сессии администраторов, хранящиеся в файлах, или другой критически важный контент.
Вторая проблема находится в модуле загрузки файлов ("nrinlinefileupload.php"). Здесь обработчик действия "remove" принимает от пользователя путь к файлу и без должных проверок безопасности передает его напрямую в функцию "unlink()", предназначенную для удаления. В результате атакующий может стереть любой файл в пределах прав пользователя Joomla. Это открывает путь не только к разрушению сайта, но и к удалению средств защиты, например, файлов ".htpasswd", которые ограничивают доступ к панели администратора.
Третья, и возможно, самая опасная уязвимость - это SQL-инъекция в классе "ajaxify.php" и его наследнике "componentitems.php". Логика получения элементов из базы данных некорректно обрабатывает параметры, поступающие от пользователя, что позволяет модифицировать SQL-запросы. В итоге злоумышленник получает возможность читать любые таблицы и столбцы, доступные учетной записи базы данных, используемой Joomla. Это прямой путь к хищению учетных данных администраторов, сессионных данных и другой критически важной информации.
Однако настоящая опасность раскрывается при объединении этих уязвимостей в единую цепочку атаки, что соответствует тактикам из матрицы MITRE ATT&CK, связанным с первоначальным доступом, повышением привилегий и выполнением команд. Типичный сценарий эксплуатации выглядит следующим образом. Сначала злоумышленник использует SQL-инъекцию для кражи активных сессий суперадминистратора из базы данных Joomla. После этого он аутентифицируется в административной панели, используя украденные данные. Получив полный контроль над сайтом, атакующий может загрузить вредоносное расширение или напрямую отредактировать PHP-файлы шаблона, чтобы встроить и выполнить произвольный код на сервере. Параллельно уязвимость удаления файлов может использоваться для устранения препятствий, например, для стирания файлов базовой аутентификации или логов, что затрудняет обнаружение вторжения и восстановление системы.
Разработчик фреймворка, компания Tassos, отреагировала на сообщение об уязвимостях и выпустила обновления. Исправленные версии доступны в разделе загрузок на официальном сайте. Затронутыми являются версии Novarain/Tassos Framework с v4.10.14 по v6.0.37, а также указанных расширений в определенных диапазонах. Для администраторов сайтов это инцидент, требующий незамедлительных действий. Если установка обновлений невозможна в кратчайшие сроки, рекомендуется временно отключить затронутые расширения или сам плагин "plg_system_nrframework" через менеджер расширений Joomla. Кроме того, на уровне веб-сервера или межсетевого экрана приложений (Web Application Firewall, WAF) следует ограничить доступ к эндпоинтам вида "?option=com_ajax", которые используются для AJAX-запросов и являются вектором атаки.
Для долгосрочной безопасности критически важно наладить процесс управления обновлениями. Следует отслеживать выпуск патчей на сайте вендора и своевременно применять их ко всем используемым продуктам. Также рекомендуется провести аудит журналов веб-сервера на предмет подозрительных запросов, содержащих "task=include", попыток загрузки нестандартных CSV-файлов или операций массового удаления. Данный инцидент наглядно демонстрирует, как уязвимости в общем компоненте, используемом множеством расширений, могут поставить под угрозу безопасность тысяч сайтов, делая регулярное обновление и принцип минимально необходимых привилегий не просто рекомендацией, а обязательным условием защиты.