В сервере приложений PHP найдена опасная уязвимость

Discussion in 'Мировые новости. Обсуждения.' started by mc_maxim, 5 Jan 2011.

  1. mc_maxim

    mc_maxim Active Member

    Joined:
    16 Jul 2010
    Messages:
    27
    Likes Received:
    127
    Reputations:
    81
    Популярный веб-сервер приложений 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​
     
    1 person likes this.
  2. TANZWUT

    TANZWUT Крёстный отец :)

    Joined:
    22 Jun 2005
    Messages:
    1,474
    Likes Received:
    716
    Reputations:
    744
    интересно, очень интересно...
     
    _________________________
  3. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,481
    Likes Received:
    7,045
    Reputations:
    693
    Немного подробнее..
    В интерпретаторе 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 помогает.
     
    _________________________
    #3 Suicide, 6 Jan 2011
    Last edited: 6 Jan 2011
    2 people like this.
  4. HIMIKAT

    HIMIKAT Elder - Старейшина

    Joined:
    12 Jan 2007
    Messages:
    2,707
    Likes Received:
    581
    Reputations:
    403
    Очень занятная уязвимость, подобного рода баги, не часто находят.
     
  5. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    PHP:
    $a '2.2250738585072011e-308'
    echo 
    $a 0;
    Ааааа httpd.exe - 99% ЦП ))))))))))
     
  6. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Интересная уязвимость, проверил на локалхосте - работает :3
     
  7. kis.orencode

    kis.orencode New Member

    Joined:
    12 Sep 2010
    Messages:
    0
    Likes Received:
    4
    Reputations:
    0
    Nightmarе нет =) судя по теме http://forum.antichat.ru/thread251139.html его ддосят по большей части при помощи роутеров
     
    #7 kis.orencode, 6 Jan 2011
    Last edited: 6 Jan 2011
    1 person likes this.
  8. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Прикольно, работает :)
     
  9. Law

    Law Member

    Joined:
    10 Oct 2010
    Messages:
    211
    Likes Received:
    44
    Reputations:
    6
    может быть :D
     
Loading...