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. Пересоберите и переустановите сервер.

Временное решение

Если немедленное обновление невозможно, примените следующие меры:

  1. Отключите поддержку CGI в конфигурации GoAhead, если она не требуется для работы.

    • Найдите в конфигурационном файле (например, goahead.conf) директиву, включающую CGI (например, cgi или route с обработчиком cgi).
    • Закомментируйте или удалите соответствующие строки и перезапустите сервер. ```bash

    Пример: остановить и перезапустить службу

    sudo systemctl restart goahead ```

  2. Ограничьте доступ к CGI-скриптам с помощью правил брандмауэра (например, iptables или firewalld), разрешив доступ только с доверенных IP-адресов.

  3. Настройте правила WAF (Web Application Firewall), такие как ModSecurity для Nginx/Apache (если GoAhead работает за прокси), чтобы блокировать HTTP-запросы, содержащие подозрительные переменные окружения (например, LD_PRELOAD, LD_LIBRARY_PATH).

  4. Запускайте GoAhead в изолированном окружении, например, внутри контейнера (Docker) с минимальным набором библиотек или с использованием механизмов безопасности Linux (AppArmor, SELinux) для ограничения возможных действий процесса.