Разработчики платформы IP-телефонии FreePBX выпустили серию обновлений безопасности для версии 17, устраняющих две уязвимости, получившие высокий уровень опасности по шкале CVSS. Патчи закрывают проблемы в модулях API и Backup - обе позволяют аутентифицированному злоумышленнику получить полный контроль над сервером.
Детали уязвимостей
Исследователь под псевдонимом chrsmj обнаружил и задокументировал обе проблемы. Первая из них затрагивает модуль API в версиях FreePBX 17 до 17.0.9. Уязвимость связана с генератором документации API: он принимает от аутентифицированного пользователя параметр host и использует его для построения shell-команды. При этом проверка подлинности OAuth-токена выполняется, а вот экранирование и валидация самого параметра host - нет. В результате администратор, имеющий доступ к GraphQL-интерфейсу модуля, может выполнить произвольные команды на уровне оболочки операционной системы.
Согласно бюллетеню, код, приводящий к этой проблеме, был внедрён в 2023 году в рамках обновления Process function для FreePBX 17. Разработчики подчёркивают, что для эксплуатации уязвимости требуется аутентифицированный доступ к модулю API. Риск выше для тех администраторов, которые предоставляют доступ к API менее доверенным сторонам или инструментам автоматизации. В обычной конфигурации конечные пользователи таким доступом не обладают.
Вторая уязвимость обнаружена в модуле Backup в версиях 17.0.5.34 и новее (до выхода исправления 17.0.11). Проблема затрагивает AJAX-метод publicKeySave, который позволяет пользователям загружать произвольные открытые SSH-ключи. Исследователь отмечает, что такая функциональность могла быть предусмотрена для административных сценариев (настройка "тёплого резерва" или удалённого резервного копирования), но реализация оказалась критической с точки зрения безопасности. Механизм добавляет ключи напрямую в файл authorized_keys системного пользователя asterisk без достаточной валидации.
Последствия этой уязвимости выходят далеко за пределы резервного копирования. Злоумышленник получает возможность установить постоянный SSH-доступ к серверу, что открывает путь к удалённому выполнению произвольных команд. Такой доступ сохраняется после перезагрузок системы и может оставаться незамеченным на уровне журналов приложения. Помимо этого, через метод publicKeyRemove атакующий способен удалить или перезаписать легитимные SSH-ключи администраторов, заблокировав их собственный доступ. Это усложняет расследование инцидента и позволяет злоумышленнику продолжать перехват вызовов, мошеннические операции или кражу данных.
Исследователь поясняет, что уязвимость иллюстрирует нарушение границ доверия между веб-приложением и операционной системой. Ошибка была внесена в 2024 году при внедрении улучшений пользовательского интерфейса. Как и в случае с проблемой в API, эксплуатация требует аутентификации; при этом обычно это учётная запись с правами администратора.
Обе уязвимости получили одинаковый базовый балл 8.6 по версии CVSS 4.0. Оценка с учётом угроз и среды (BTES) снижается до 6.1 (средний уровень), а альтернативная CVSS 4.1 присваивает 0.9 балла. Разработчики рекомендуют как можно скорее обновить модули API до версии 17.0.9 и модуль Backup до версии 17.0.11.
В качестве временных мер защиты специалисты советуют ограничить доступ к API и панели администратора FreePBX (ACP) только с доверенных сетей, использовать встроенный модуль межсетевого экрана, применять многофакторную аутентификацию и управление пользователями. Отдельно рекомендуется пересмотреть контрольные цепочки всех SSH-ключей, включая те, которые хранятся вне инфраструктуры FreePBX, и, при необходимости, сменить их. Официальный репозиторий идентификаторов CVE не содержит записей для этих уязвимостей.
Ситуация с FreePBX в очередной раз демонстрирует, что функции, упрощающие административные задачи, нередко становятся источником серьёзных рисков, если их разработка не сопровождается строгим разделением привилегий и проверкой вводимых данных.
Ссылки
- https://github.com/FreePBX/security-reporting/security/advisories/GHSA-24w6-hpg3-rwfg
- https://github.com/FreePBX/security-reporting/security/advisories/GHSA-79rg-3xp6-rqq6