Популярный веб-сервер приложений PHP оказался подвержен новой и довольно опасной уязвимости, проявляющейся в момент, когда происходит обработка больших чисел с плавающей запятой. В данный момент в сервере происходит переполнение буфера с последующим крахом программного обеспечения. По словам ИТ-специалистов, данной проблемой в PHP могут воспользоваться злоумышленники, чтобы получить несанкционированный доступ к серверам, где PHP работает. Баг возникает в тот момент, когда PHP обрабатывает большие цифры и пытается преобразовать их из строчного формата в формат с плавающей запятой. В этот момент в сервере приложений может произойти сбой и программа может войти в бесконечный цикл, быстро выйдя за пределы отведенной памяти. На форуме разработчиков PHP сообщается, что на базе данной ошибки довольно просто создать злонамеренный код который будет рушить сервер под управлением PHP. Для реализации условий бага северу просто достаточно через стандартную функцию get () передать "волшебное" число. Однако баг, судя по всему, работает только на PHP 5.2 и 5.3, а также только на 32-битных системах с процессорной архитектурой x86. Другие системы, а также серверы x86_64 этой уязвимости не подвержены. Для решения проблемы разработчики PHP предлагают либо обновить исходники PHP 5.2/5.3, скачав новые файлы по адресу http://svn.php.net/viewvc?view=revision&revision=307095, либо перекомпилировать существующую версию PHP, выставив в конфигурационных файлах дополнительные флаги для обработки цифр с плавающей запятой. (19:10) 05.01.2011 http://www.cybersecurity.ru/programm/112049.html
Немного подробнее.. В интерпретаторе PHP версий 5.2 и 5.3 была обнаружена довольно странная ошибка: при обработке некоторых числовых значений (в частности, 2.2250738585072011e-308) интерпретатор зависал (достаточно выполнить "$a = 2.2250738585072011e-308;" или "$a = '2.2250738585072011e-308'; echo $a + 0;"). Как показали дальнейшие исследования, такое поведение интерпретатора вызвано наличием ошибки округления, порождающей бесконечный цикл при попытке преобразования строки в число. Что характерно, сходные аномалии при операциях с вещественными значениями были замечены при работе с gcc еще в 2000 году. Однако, стоит подчеркнуть, что корень ошибки кроется не в конкретной реализации компилятора, а в некорректной работе процессоров архитектуры x86 с вещественными 64-битными типами данных, при задействовании набора инструкций x87. На других архитектурах, включая x86_64, данная ошибка не возникает (в x86_64 вместо x87 используются инструкции SSE2). Возникшая в результате этой ошибки DoS-уязвимость PHP может быть задействована удаленно — достаточно передать «магическое число» в качестве значения параметра, с которым в коде производятся какие-либо арифметические операции (в виде обычной стоки такое число, естественно, угрозы не представляет — проблема возникает при преобразовании этой строки в число). Кроме числа 2.2250738585072011e-308, подобный эффект вызывают числа 0.22250738585072011e-307, 22.250738585072011e-309 и 22250738585072011e-324. Как уже упоминалось, данной проблеме подвержены ветки PHP 5.2 и 5.3. В готовящейся к выходу версии 5.3.5 она уже исправлена, для остальных версий можно задействовать простой патч (добавляет спецификатор volatile перед некоторыми объявлениями типа double). Другим вариантом решения проблемы является пересборка PHP с опцией "-ffloat-store". _ttp://www.opennet.ru/opennews/art.shtml?num=29203 _ttp://www.exploringbinary.com/php-hangs-on-numeric-value-2-2250738585072011e-308/ и вот eщё _ttp://www.reddit.com/r/programming/comments/evtrq/php_hangs_on_numeric_value_22250738585072011e308/c1benzh - -mfpmath=sse помогает.
Nightmarе нет =) судя по теме http://forum.antichat.ru/thread251139.html его ддосят по большей части при помощи роутеров