В 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-ветках.