Оглавление

Недавно PHP Foundation совместно с агентством OSTIF провела масштабный аудит безопасности ядра PHP, с привлечением профессионалов из Quarkslab. В рамках этой инициативы проверили самые важные компоненты PHP, и сейчас я подробно расскажу, какие слабые места нашли, что с ними сделали и какие выводы стоит сделать каждому разработчику.

Что было на кону?

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

Аудит, проходивший в течение двух месяцев 2024 года, охватывал:

  • Разработку модели угроз
  • Ручной анализ кода
  • Динамическое тестирование
  • Оценку криптографических функций

Проверка была сосредоточена на PHP-FPM, драйверах баз данных (PDO, MySQL Native Driver), обработке JSON и криптографии.

Основные находки

Было обнаружено 27 проблем, из них 17 — с потенциальными последствиями для безопасности:

  • 3 уязвимости высокой степени опасности
  • 5 средней степени
  • 9 низкой степени
  • 10 информационных замечаний

Четыре критических уязвимости получили идентификаторы CVE:

  • CVE-2024-9026: Возможность манипуляции логами PHP-FPM.
  • CVE-2024-8925: Ошибка обработки multipart-данных.
  • CVE-2024-8928: Проблема с памятью в обработке фильтров PHP.
  • CVE-2024-8929: Уязвимость, позволяющая вредоносному MySQL-серверу раскрывать содержимое памяти.

PHP-FPM — особое внимание

PHP-FPM — критически важный компонент, использующийся на миллионах серверов для запуска PHP-скриптов.

Среди выявленных проблем в PHP-FPM:

  • Переполнение целых чисел при указании UID/GID.
  • Возможность модификации логов рабочих процессов PHP-FPM.

Рекомендации экспертов:

  • Проверять корректность и диапазоны UID/GID перед запуском worker-процессов.
  • Корректно обрабатывать символы завершения строк и нулевые символы в логах.

MySQL и работа с базами данных

Значительные уязвимости были найдены в драйвере MySQL:

  • Потенциальная утечка данных из памяти.
  • Возможность переполнения памяти и отказа в обслуживании.

Работа с формами и JSON

Были выявлены ошибки при разборе multipart-данных, которые могут привести к некорректной обработке запросов и даже отказу в обслуживании.

Криптографические проблемы

Выявлены проблемы с интеграцией OpenSSL и Libsodium:

  • Недостаточная проверка параметров ключей и векторов инициализации (IV).
  • Возможные проблемы с обработкой ошибок и документированием.

Что сделали с найденными уязвимостями?

Команда PHP Foundation оперативно устранила выявленные проблемы. Настоятельно рекомендуется обновить свои PHP-окружения до актуальных версий, чтобы избежать потенциальных угроз.

Благодарности

Особая признательность командам, участвовавшим в аудите:

  • PHP Foundation Team (Jakub Zelenka, Arnaud Le Blanc, Niels Dossche и другие).
  • Эксперты Quarkslab (Angèle Bossuat, Julio Loayza Meneses, Sebastien Rolland и другие).
  • OSTIF и Sovereign Tech Agency за организацию и финансирование.

Полный отчет доступен по ссылке.

Выводы для разработчиков

Этот аудит показывает важность регулярных проверок безопасности даже таких надежных решений, как PHP. Обновления безопасности нужно ставить вовремя и следить за новостями в области защиты данных.

Обязательно проверьте, что ваша версия PHP актуальна. Безопасность — это всегда дешевле, чем последствия взломов.