Риск: Высокий 7.5 High CWE-532: Insertion of Sensitive Information into Log File

Открытый файл debug.log в WordPress: утечка ошибок и паролей

При включении отладки (WP_DEBUG_LOG = true) WordPress записывает все системные ошибки и предупреждения плагинов в файл /wp-content/debug.log.

Поскольку файл находится в общедоступной веб-директории, любой желающий может скачать его и прочитать трассировки стека, запросы к БД и передаваемые токены.

Степень критичности и чем опасна уязвимость

Утечка секретных ключей, SQL-запросов и путей на сервере.

Вектор атаки: Автоматизированные сканеры и поисковые ботнеты постоянно исследуют интернет по данной сигнатуре. При обнаружении уязвимости атака запускается в автоматическом режиме без участия человека.

Как наш сканер находит эту уязвимость

Site Check проверяет HTTP-доступность файла /wp-content/debug.log.

Проверка периметра CMS WordPress включает бережный опрос стандартных служебных путей (/wp-json/, /xmlrpc.php, /wp-content/plugins/) для определения векторов утечки версий плагинов, имен авторов и отладочных логов без создания нагрузки на базу данных MySQL.

Как устранить уязвимость (Пошаговое руководство)

Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:

Отключение отладочного лога в wp-config.php
      // В wp-config.php отключите публичную запись логов:
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);
    
  • Отключите WP_DEBUG_LOG на продакшне.
  • Удалите файл debug.log из каталога /wp-content/.
  • Заблокируйте доступ к *.log файлам в Nginx.

Анатомия атаки и реальные последствия для проекта

Включение WP_DEBUG_LOG создает общедоступный файл /wp-content/debug.log, куда записываются ошибки PHP, включая стек вызовов, дампы SQL-запросов и случайные ключи авторизации.

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

Влияние на соответствие стандартам: Нарушение требований защиты конфиденциальности по 152-ФЗ и GDPR (ст. 32 о недопустимости утечки технических журналов и персональных данных в открытый доступ).

Матрица эшелонированной защиты (Defense-in-Depth)

Уровень защиты Техническое действие Инструмент / Механизм
Конфигурация wp-config.php Установка WP_DEBUG_LOG в false или перенос пути лога за пределы public_html WordPress Core Config
Веб-сервер Nginx / Apache Блокировка доступа ко всем файлам с расширением .log (location ~* \.log$ { deny all; }) Nginx Deny Directives
Операционная система Удаление существующего файла debug.log и установка прав 600 на каталоги логов Linux Permissions

Верификация устранения: команды для быстрой проверки

После внесения изменений в настройки сервера или исходный код приложения проверьте отсутствие уязвимости с помощью терминальных утилит:

Терминал: Проверка эндпоинта и заголовков ответа
curl -I -s https://ваш-домен.com/wp-content/debug.log | grep "HTTP/"
# Ожидается 404
    

Рекомендации DevSecOps для безопасного развертывания

В wp-config.php установите define("WP_DEBUG_DISPLAY", false); и заблокируйте доступ к *.log файлам в конфигурации Nginx.

Контрольный чеклист инженера безопасности:
  • ✓ Отключить протокол xmlrpc.php через конфигурационный файл веб-сервера Nginx
  • ✓ Ограничить публичный доступ к эндпоинту /wp-json/wp/v2/users для анонимных клиентов
  • ✓ Запретить выполнение PHP-скриптов в директории загрузок /wp-content/uploads/
  • ✓ Включить автоматические обновления безопасности ядра WordPress и плагинов

Часто задаваемые вопросы по устранению

Почему debug.log создается в общедоступной папке?
По историческим причинам WordPress по умолчанию сохраняет отладочные сообщения в директорию /wp-content/, которая является общедоступной частью веб-сайта.
Как безопасно вести отладку на боевом сайте WordPress?
Задайте пользовательский путь для лога за пределами корневого каталога веб-сервера через директиву define('WP_DEBUG_LOG', '/var/log/wordpress/debug.log').
Экспертное резюме инженера по информационной безопасности

Экосистема WordPress часто подвергается массированным автоматизированным сканированиям. Отключение неиспользуемого протокола XML-RPC, сокрытие REST API эндпоинта пользователей и регулярное обновление тем и плагинов снижают риск компрометации сайта на 95%.

Для предотвращения вектора «Открытый файл debug.log в WordPress: утечка ошибок и паролей» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.