PHP Core Security Audit 2024: находки, CVE и зачем обновляться

В 2024 году PHP Foundation вместе с OSTIF провела аудит безопасности ядра PHP. Работу выполняли специалисты Quarkslab: модель угроз, ручной разбор кода, динамические проверки, криптография. Ниже что нашли, какие CVE вышли, на что смотреть в FPM, MySQL и JSON и зачем обновляться.

Зачем вообще аудит ядра

PHP стоит на огромной доле веба. Баг в ядре это не «локальная опечатка в одном проекте», а общий риск для тысяч приложений: утечки, порча логов, DoS, странности в обработке запросов и драйверах БД.

Аудит шёл около двух месяцев и фокусировался на критичных контурах:

  • построение модели угроз;
  • ручной анализ кода;
  • динамическое тестирование;
  • оценка криптографических путей.

В прицеле: PHP-FPM, драйверы БД (PDO, MySQL Native Driver), разбор JSON и крипто-интеграции.

Цифры и CVE

Всего зафиксировали 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

FPM тот слой, через который крутится PHP на большинстве продакшен-серверов. Среди замечаний:

  • переполнение целых при указании UID/GID;
  • возможность модификации логов worker-процессов (см. CVE-2024-9026).

Что логично из отчёта и рекомендаций:

  • проверять корректность и диапазоны UID/GID до старта worker;
  • аккуратно обрабатывать переводы строк и нулевые байты в лог-путях и сообщениях, чтобы не ломать формат логов.

MySQL-драйвер

В native-драйвере MySQL отметили:

  • риск утечки данных из памяти (в т.ч. сценарий с ненадёжным или вредоносным MySQL-сервером, CVE-2024-8929);
  • сценарии, ведущие к переполнению памяти и отказу в обслуживании.

Практически: не считайте «свой» MySQL единственной моделью угроз. Если клиент ходит к недоверенному серверу БД (тестовые стенды, shared, скомпрометированный хост), поверхность атаки шире, чем «просто SQL-injection в приложении».

Multipart и JSON

Ошибки разбора multipart (CVE-2024-8925) бьют по формам, загрузке файлов и любому коду, который опирается на корректный разбор body. Следствия: неверная интерпретация запроса и в худшем случае DoS. Отдельно смотрели пути, связанные с JSON и фильтрами (в т.ч. CVE-2024-8928 по памяти в фильтрах).

Криптография

По связке с OpenSSL и Libsodium отметили:

  • недостаточную проверку параметров ключей и IV;
  • шероховатости в обработке ошибок и документации.

Это не обязательно «сегодня взломают прод», но для crypto-кода любая дыра в валидации параметров красный флаг: обновления ядра и библиотек здесь критичны.

Что сделали с находками

Команда PHP Foundation закрыла выявленные проблемы в релизах безопасности. Практический вывод для админов и разработчиков один: держать PHP на актуальных патч-версиях веток, которые вы ещё поддерживаете, и не откладывать security-релиз «на потом».

Кто участвовал

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

Выводы для практики

  • Аудит ядра нормальная гигиена экосистемы, а не «признак слабого PHP».
  • FPM, multipart, filters и MySQL-клиент зоны, где баги бьют сразу по продакшену.
  • CVE из отчёта уже в публичном поле: проверяйте, что на серверах стоят версии с фиксом.
  • Security-обновление ядра почти всегда дешевле разбора инцидента.

Если коротко: прочитайте отчёт (или хотя бы список CVE), сверьте php -v и пакеты в образе, обновитесь и зафиксируйте процесс патчинга. Остальное уже про мониторинг и привычку не жить на EOL-ветках.

Источники и ссылки


Комментарии загружаются…