В популярном языке программирования PHP найдена уязвимость, которую можно считать наиболее опасной почти за все время существования данного языка. Она обнаружена только в версии языка 5.3.9 и дает возможность удалённо исполнить злоумышленнику произвольный код на сервере, в независимости от того сколько скриптов используется и какие они. Если атака будет совершена удачно, то код злоумышленника будет выполнен с правами приложения, к которому будет отправлен оформленный необходимым образом запрос.
По своеобразному стечению обстоятельств данная уязвимость является следствием устранения неопасной проблемы в безопасности, проявившейся в предшествующей версии языка. Чтобы защититься от DoS-атаки, вызванной уязвимостью в работе с предсказуемыми коллизиями, в версии языка 5.3.9, при написании алгоритма была реализована директива max_input_vars, которая позволяет уменьшить число входящих параметров для HTTP-запросов. Алгоритм данной директивы был реализован с ошибкой, сделавшей возможным проведение атаки, опасность которой велика.
Виной всему является то, что при написании программного кода с поддержкой необходимой директивы max_input_vars не был написан блок кода, содержащий освобождение памяти программы и выход из данной функции. Без него, во время превышения лимита, по умолчанию установленного в 1000, директивой max_input_vars, переменная занимает место указателя, который в последующем получает управление программой.
Всем, кто использует версию языка 5.3.9, необходимо установить дополнение, устраняющее уязвимость, а также можно использовать ранние версии PHP. Опасным является то, что поддержка данной директивы вошла в состав пакетов для множества дистрибутивов и включена в более ранние версии PHP.
Данная уязвимость была найдена С. Эссером, главным разработчиком таких проектов, как Suhosin, так и Hardened-PHP. Внося комментарии в решение проекта Debian о неиспользовании модуля защиты Suhosin, он акцентировал внимание на том, что уязвимость в языке PHP была весьма кстати, потому что она производит наглядную демонстрацию необходимости в использовании Suhosin. Данный инструмент значительно уменьшает вероятность использования уязвимости, даже в конфигурации по умолчанию.
Разработчикам удалось своевременно выпустить версию PHP 5.3.10 с устранением уязвимости, которую сразу же включили в пакеты для дистрибутивов на базе ядра Linux. Для стабильной ветки дистрибутива Debian/Linux также доступно обновление php5-5.3.3-7+squeeze 7, полностью ликвидирующее данную уязвимость. Обновленную версию PHP также можно установить и в RHEL и CentOS.