Все уязвимости

CVE-2024-40725

Apache AddType: когда посетитель получает исходный код PHP

В Apache 2.4.60–2.4.61 старый способ назначения обработчиков через AddType мог привести к выдаче исходного файла вместо выполнения. Проверьте конфигурацию PHP, обновите Apache и отдельно оцените, не раскрылись ли секреты.

Проверено 26 октября 2026Important по шкале команды безопасности Apache. Подтверждённое последствие — раскрытие локального содержимого, в том числе исходного кода; это не самостоятельное доказательство удалённого выполнения кода.

Кому нужно проверить

Администраторам Apache с PHP или другими обработчиками скриптов, особенно после обновления старой конфигурации на 2.4.60–2.4.61. Владельцу хостинга без доступа к настройкам нужно запросить проверку у провайдера. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.

В чём риск

Обычно сервер передаёт PHP-файл интерпретатору — программе, которая выполняет инструкции и возвращает готовую страницу. При этой ошибке некоторые запросы могут миновать ожидаемый обработчик, и посетитель получает сам текст программы. Исходник иногда содержит пароли, ключи или внутренние сведения, но наличие таких данных зависит от конкретного файла. Даже после обновления уже скачанный текст нельзя забрать у получателя, поэтому устранение ошибки и реагирование на возможное раскрытие секретов — отдельные действия.

Затронутые версии

Apache HTTP Server 2.4.60 и 2.4.61. Необходима затронутая конфигурация обработчиков на основе типа содержимого, например прежнее использование AddType для запуска скриптов. Advisory описывает определённые случаи непрямого обращения к файлам. Само наличие PHP или директивы AddType для обычных статичных файлов ещё не доказывает применимость. Это неполное исправление предыдущей ошибки CVE-2024-39884, но здесь рассматривается отдельно CVE-2024-40725 и её итоговое исправление.

Исправленные версии

Исправлено upstream в Apache HTTP Server 2.4.62. Используйте поддерживаемое обновление своего поставщика с закрытой CVE-2024-40725; перенос исправления в пакет может не менять базовый номер. Версия 2.4.61 не является достаточным исправлением этой ошибки. Исторический минимум 2.4.62 не заменяет установку последующих security-обновлений.

Что сделать

  1. 1Проверьте установленную и работающую версии Apache и уведомление поставщика о патче. Попросите администратора установить, как назначается обработчик PHP: через старую связь AddType или иной механизм. Не заменяйте директивы по универсальному образцу: PHP-FPM и встроенный модуль PHP требуют разных настроек.
  2. 2Если есть основания полагать, что исходники доступны, временно закройте затронутый сайт или маршруты на внешнем уровне, который не зависит от подозрительного обработчика. Проверьте, что ограничение реально действует. Это временная мера до обновления, а не способ исправить Apache.
  3. 3Сохраните журналы доступа и конфигурацию в закрытом хранилище до изменений. Не проверяйте утечку скачиванием рабочего файла с секретами через публичный адрес и не отправляйте такие ответы в сторонние сервисы анализа.
  4. 4Создайте резервную копию сайта и настроек. В изолированной тестовой среде воспроизведите свою конфигурацию с безвредным тестовым скриптом, который выводит фиксированную строку и не содержит секретов. Проверьте обычные и используемые приложением непрямые маршруты после установки исправленного поддерживаемого пакета.
  5. 5Согласуйте окно обновления, проверьте конфигурацию и перезапустите или перезагрузите службу штатным способом поставщика. План восстановления должен включать конфигурацию и пакет. Если откат возвращает уязвимую сборку, не открывайте сайт посетителям до альтернативного безопасного решения.
  6. 6Убедитесь, что тестовый скрипт выполняется, а не скачивается исходным текстом, и что основные страницы работают. Одного успешного открытия главной страницы недостаточно: проверьте используемые правила маршрутизации. Удалите временный тестовый файл своим обычным процессом развёртывания.
  7. 7По журналам и составу потенциально раскрытых файлов оцените период и объём утечки. Если могли раскрыться действующие ключи или пароли, замените их и проверьте последующее использование. Отсутствие подробных журналов не позволяет уверенно объявить, что раскрытия не было.

Выполнение скрипта и раскрытие исходника — разные ответы

Запрос должен попасть в обработчик PHP. Посетитель получает текст файла; обновление не отменяет уже случившееся раскрытие.

  1. 1Запрос должен попасть в обработчик PHP.
  2. 2В норме обработчик выполняет файл и отдаёт готовый ответ.
  3. 3При затронутом непрямом обращении обработчик может быть пропущен.
  4. 4Посетитель получает текст файла; обновление не отменяет уже случившееся раскрытие.

Примеры конфигурации и проверки

Проверить номер установленного httpd (shell)
httpd -v

Для Linux/Unix-систем с Apache под именем httpd. Выполняйте локально обычным пользователем; при другом имени программы используйте документированный исполняемый файл своего пакета. Ожидается строка Server version. Проверка не обращается к сайту, не читает исходники и ничего не меняет, откат не нужен. Она не показывает активный способ запуска PHP и не доказывает наличие backport: их проверяют отдельно. Нельзя считать другую установленную копию Apache версией работающего сайта.

Как не подпустить ботов к сайту

BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.

Первоисточники

Снизьте шанс атаки до того, как бот дойдёт до сайта

Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.