CVE-2017-17562
Embedthis GoAhead
2021-12-10
Embedthis GoAhead before 3.6.5 allows remote code execution if CGI is enabled and a CGI program is dynamically linked.
Технический анализ и план устранения
Суть уязвимости
Уязвимость в веб-сервере GoAhead версий до 3.6.5 позволяет удаленному злоумышленнику выполнить произвольный код на сервере при соблюдении двух условий: 1. Включена поддержка CGI (Common Gateway Interface). 2. Исполняемый файл CGI-программы динамически слинкован (использует общие библиотеки).
Атакующий может передать специально сформированные переменные окружения через HTTP-запрос к CGI-скрипту. Эти переменные, такие как LD_PRELOAD, могут заставить CGI-программу загрузить и выполнить вредоносную библиотеку, что приведет к выполнению кода злоумышленника с правами пользователя, от которого работает веб-сервер (часто www-data или nobody).
Как исправить
Основное решение — обновить GoAhead до безопасной версии.
Для систем на базе Debian/Ubuntu:
# Обновите пакет goahead до версии 3.6.5 или выше
sudo apt update
sudo apt install goahead
Убедитесь, что установленная версия не ниже 3.6.5: apt list --installed | grep goahead
Для систем на базе RHEL/CentOS:
Используйте менеджер пакетов yum или dnf для обновления пакета goahead из официальных или EPEL-репозиториев до версии >=3.6.5.
Если GoAhead собран из исходников: 1. Скачайте и установите версию 3.6.5 или новее с официального сайта: https://github.com/embedthis/goahead. 2. Пересоберите и переустановите сервер.
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Отключите поддержку CGI в конфигурации GoAhead, если она не требуется для работы.
- Найдите в конфигурационном файле (например,
goahead.conf) директиву, включающую CGI (например,cgiилиrouteс обработчикомcgi). - Закомментируйте или удалите соответствующие строки и перезапустите сервер. ```bash
Пример: остановить и перезапустить службу
sudo systemctl restart goahead ```
- Найдите в конфигурационном файле (например,
-
Ограничьте доступ к CGI-скриптам с помощью правил брандмауэра (например,
iptablesилиfirewalld), разрешив доступ только с доверенных IP-адресов. -
Настройте правила WAF (Web Application Firewall), такие как ModSecurity для Nginx/Apache (если GoAhead работает за прокси), чтобы блокировать HTTP-запросы, содержащие подозрительные переменные окружения (например,
LD_PRELOAD,LD_LIBRARY_PATH). -
Запускайте GoAhead в изолированном окружении, например, внутри контейнера (Docker) с минимальным набором библиотек или с использованием механизмов безопасности Linux (AppArmor, SELinux) для ограничения возможных действий процесса.