Специалисты по информационной безопасности обнаружили опасную уязвимость в популярной платформе для автоматизации жилья MajorDoMo. Проблема получила идентификатор CVE-2026-27174 и классифицируется как критическая. Она позволяет злоумышленнику удаленно выполнить произвольный код на сервере без каких-либо учетных данных. Учитывая, что MajorDoMo часто выступает центральным контроллером для камер, датчиков, систем климат-контроля и других устройств интернета вещей (IoT), компрометация одной такой инсталляции может привести к полному захвату сервера и проникновению во всю внутреннюю сеть.
Что такое MajorDoMo и почему он под ударом
MajorDoMo - это открытая платформа для автоматизации жилых помещений и управления устройствами интернета вещей. Она позволяет подключать освещение, видеокамеры, датчики движения, температуры, системы безопасности и другие интеллектуальные устройства к единой панели управления. Решение часто разворачивают на домашних серверах, виртуальных машинах, одноплатных компьютерах вроде Raspberry Pi или в частных облаках. Пользователи ценят MajorDoMo за возможность централизованно управлять всем хозяйством, создавать собственные сценарии автоматизации и не зависеть от облачных сервисов крупных вендоров.
Именно поэтому любая уязвимость в этой системе может иметь серьезные последствия. Атакующий, получивший контроль над MajorDoMo, способен просматривать видеопотоки с камер, отпирать замки, менять сценарии автоматизации, похищать сохраненные пароли и токены доступа, а также использовать скомпрометированный сервер как трамплин для атак
Как работает уязвимость
Корень проблемы кроется в двух ошибках программирования, которые в сочетании дают критический эффект. Первая ошибка связана с некорректной проверкой подлинности. Когда неаутентифицированный пользователь пытается обратиться к административной панели, система отправляет ему HTTP-редирект, но не останавливает выполнение PHP-скрипта командой exit или die. Это означает, что после отправки заголовка перенаправления сервер продолжает обрабатывать запрос и загружает защищенные модули.
Вторая ошибка - опасное использование функции eval(). Внутри обработчика AJAX-запросов, предназначенного для консольной отладки, принимаются пользовательские данные и без какой-либо фильтрации передаются в eval(). Эта функция выполняет переданную ей строку как PHP-код. Таким образом, атакующий может подать на вход любую команду и получить её исполнение на сервере.
Цепочка атаки
На практике эксплуатация выглядит следующим образом. Злоумышленник находит доступную через интернет инсталляцию MajorDoMo, используя поисковые системы или сканирование сети. Затем он формирует специальный HTTP-запрос к конечной точке /admin.php. В запросе присутствуют параметры ajax_panel=1, op=console и command= с вредоносным кодом. Поскольку проверка подлинности не прерывает выполнение, запрос доходит до внутреннего обработчика inc_panel_ajax.php, где параметр op выбирает ветку консоли. После этого значение из command попадает в eval(), и PHP-код атакующего исполняется.
Простая демонстрация уязвимости выглядит так:
| 1 | curl "http://example.com:8000/admin.php?ajax_panel=1&op=console&command=echo+exec(%27id%27);" |
В ответ сервер возвращает результат работы утилиты id, что подтверждает выполнение произвольных команд.
Потенциальные последствия
Успешная атака позволяет злоумышленнику выполнять любые PHP-команды с правами веб-сервера. Этого достаточно, чтобы прочитать файлы конфигурации, базы данных, ключи API, а также записать на сервер веб-шелл (специальный скрипт для удаленного управления). Если в PHP включены опасные функции вроде system или shell_exec, атакующий может выполнять команды операционной системы, что ведёт к полной компрометации хоста.
Далее следуют сценарии, типичные для умного дома: отключение или искажение сценариев автоматизации, вывод из строя датчиков, несанкционированное управление замками и камерами. Кроме того, захваченный сервер становится точкой для перемещения по внутренней сети и атак на другие устройства - от роутеров до рабочих станций.
Рекомендации по защите
Компаниям и частным пользователям, использующим MajorDoMo, следует немедленно принять меры. В первую очередь нужно ограничить доступ к административной панели - настроить брандмауэр так, чтобы /admin.php был доступен только из доверенных IP-адресов. Если удаленное администрирование необходимо, стоит разместить интерфейс за VPN-туннелем, а не открывать его напрямую в интернет. Дополнительным барьером может стать аутентификация на уровне обратного прокси-сервера - например, HTTP Basic Auth или шлюз с многофакторной проверкой.
Также настоятельно рекомендуется отключить консольный отладчик, если он не используется для日常工作. Разработчикам платформы следует как можно скорее выпустить патч, а пользователям - установить обновление. Тем, кто подозревает, что их система уже скомпрометирована, необходимо проверить веб-логи на предмет подозрительных запросов с параметрами /admin.php, ajax_panel=1, op=console и необычными строками в параметре command. После этого стоит сменить все пароли администратора, API-токены и ключи интеграции с третьими сервисами.
Вывод
Уязвимость CVE-2026-27174 наглядно демонстрирует, как две, казалось бы, мелкие ошибки кодирования - отказ от принудительного завершения скрипта после редиректа и использование eval() на непроверенных данных - превращаются в критическую опасность. В случае с MajorDoMo речь идет не просто об испорченном сайте, а о возможном вторжении в физически связанные системы умного дома. Этот инцидент служит очередным напоминанием разработчикам: никогда не полагаться на редиректы как на средство контроля доступа и никогда не выполнять динамически код, полученный от пользователя.
Ссылки
- https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2026/CVE-2026-27174.yaml
- https://www.cve.org/CVERecord?id=CVE-2026-27174
- https://github.com/sergejey/majordomo/pull/1177
- https://www.resecurity.com/es/blog/article/critical-majordomo-rce-cve-2026-27174-unauthenticated-remote-code-execution-analysis