The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Новая уязвимость в PHP раскрывает двери спамерам

08.04.2007 11:43

В PHP 5.2.1 и 5.2.0 обнаружена возможность вставки символа новой строки через email адрес переданный в функцию отправки сообщения. Ошибка в regex выражении для проверки валидности email адреса в фильтре ext/filter (функция filter_var с параметром FILTER_VALIDATE_EMAIL), позволяет добавить дополнительные заголовки в тело письма, что может быть использовано для массовой рассылки спама через различные web-формы.

Проблема связана с отсутствием D модификатора в сочетании с символом проверки конца строки $ (если поставить \n - то выражение после \n не попадет в область видимости регулярного выражения) в PCRE выражениях используемых в ext/filter, также отмечается, что ошибка типична для большого числа скриптов в которых используется функция preg_match().

  1. Главная ссылка к новости (http://www.securityfocus.com/b...)
  2. PMOPB-45-2007:PHP ext/filter Email Validation Vulnerability
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/10401-php
Ключевые слова: php, security, spam
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (17) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Keeper (??), 19:04, 08/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уже даже не смешно.
     
  • 1.3, Dyr (??), 19:24, 08/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как они уже заеб..ли уже со своими дырами, а.
     
  • 1.4, Аноним (-), 20:21, 08/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хм.. для этой уязвимости необходимо чтобы выполнились условия

    1. PHP 5.2.x
    2. Использование фильтров для проверки email.

    Зная это очень легко устранить эту уязвимость.

    На сегодняшний день. Очень немногие используют эту версию.

     
     
  • 2.7, Spec (?), 06:36, 09/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    +1
    Хотя, безусловно, новость - не из приятных.
     

  • 1.5, GraywinD (??), 20:22, 08/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Супер. :-)
     
  • 1.6, aTz (?), 23:30, 08/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Честно говоря я не очень понял в чём заключается уязвимость такая прям страшная. Ну да ... согласен:
    <?
    $var = "test@example.com\n";
    var_dump(filter_var($var, FILTER_VALIDATE_EMAIL));
    ?>
    Действительно не возвращает false - а ДОЛЖНО было бы. Но зато:
    <?
    $var = "test@example.com\nCc:test@example.com";
    var_dump(filter_var($var, FILTER_VALIDATE_EMAIL));
    ?>
    Уже возвращает false, да и вообще если после "\n" хоть что-то написать - возвращает false.

    Так в чём заключается уязвимость, которая открывает такие широкие ворота спамерам? Объясните кто-нибудь? :)

     
     
  • 2.8, SubGun (ok), 10:56, 09/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Я так понял, что после \n можно скрипт хитрый напихать и он выполнится.
     

  • 1.9, bolk (?), 11:53, 09/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    О фильтрах ещё даже мало кто знает пока, не говоря уже об использовании.
     
  • 1.10, Iscander (??), 17:24, 09/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А что мешает использовать собственный валидатор? Религия не позволяет? Как правило у любого нормального программиста через пару месяцев есть готовые валидаторы практичекси на всё к тому же отлаженые. Уязвимость для script-kidy программистов, своё писать надо, а не доверять существующему. В особо критичных случаях можно и нужно перепроверять получателя по SMTP.
     
     
  • 2.17, Anatoliy (??), 14:14, 11/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    А еще через пару месяцев, когда программист становится НОРМАЛЬНЫМ он прекращает использовать PHP (ака Basic for WEB) совсем.
     

  • 1.11, lopux (?), 18:08, 09/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > А что мешает использовать собственный валидатор? Религия не позволяет?

    Esli kazhdiy budet pisat' sobstvenniy validator mi daleko ne uidem v etom mire :)

    > В особо критичных случаях можно и нужно перепроверять получателя по SMTP

    A vot eto voobche durnoy ton. "перепроверять" nikogda nichego ne nuzhno. Nuzhno "proveryat'" odin raz, i navsegda :) Ne doveryaete biblioteke? Voz'mite druguyu.

     
  • 1.12, Аноним (-), 23:27, 09/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Больше всего меня улыбает читая новости на опеннете, это очередные вести о дырках.  Прочитав в рссах заголовок новости, тут же кинулся посмотреть, что скажут пхписты. Первый коммент выразил я думаю всеобщее настроение))
     
  • 1.13, bugzilla (?), 10:53, 10/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Коллеги, просвятите плз - это на mod_php как-то распостраняется?
     
  • 1.14, Аноним (-), 11:24, 10/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Одним смешно, другим не смешно. :) :(
    http://www.google.com/codesearch?q=FILTER_VALIDATE_EMAIL&hl=en&btnG=Search+Co
    Проблема вообще мизерная. Проектов которые юзают jelix, мало. Сайтов написанных на Solar тоже. Домашние поделки по определению не используют эту фичу.
     
     
  • 2.15, Антон (??), 12:32, 10/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    А ты preg_match ищи: Results 1 - 10 of about 49,300.

    FILTER_VALIDATE_EMAIL лишь одно проявление глобальной проблемы, которая больше с криворукостью связана, чем с PHP.

    На perl тоже полно штучек, очень часто пишут /$user_var/ вместо /\Q$user_var\E/. Если в $user_var подставить "?{ system(qw(ls -al /)); }" будет "Ой".

     
     
  • 3.18, balex (??), 11:08, 12/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >FILTER_VALIDATE_EMAIL лишь одно проявление глобальной проблемы, которая больше с криворукостью связана, чем с PHP.

    Вполне согласен, достаточно просто от этого защититься:
    filter_var(trim($var), FILTER_VALIDATE_EMAIL);

    И все проблемы как рукой снимет.

     

  • 1.16, Apocalepse (?), 23:58, 10/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    filter_var это такое нововведение в PHP5?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру