В коде генерации номеров уникальных пользовательских сессий и уникальных идентификаторов (uniqid) PHP найдена (http://seclists.org/fulldisclosure/2010/Mar/519) недоработка, позволяющая злоумышленнику предсказать другие номера последовательности, зная текущий номер сессии (например, войдя на форум можно подобрать номера сессий других пользователей). Проблема вызвана некорректной инициализацией генератора случайных чисел в PHP, начальные значение затравки для которого можно предсказать с достаточно высокой степенью вероятности.
Проблеме подвержены все версии PHP, включая 5.3.2. Интересно, что при выпуске версии PHP 5.3.2 (http://www.opennet.me/opennews/art.shtml?num=25680) разработчики знали о существовании данной проблемы и даже изменили метод инициализации генератора случайных чисел, но то изменение по сути сводилось к добавлению предсказуемой константы, т.е. принципиально не устраняло суть проблемы, а лишь защищало от определенного эксплоита. Защита от подобного рода проблем в пр...URL: http://seclists.org/fulldisclosure/2010/Mar/519
Новость: http://www.opennet.me/opennews/art.shtml?num=26026
php, такой php!
Можно подумать остальные без багов. Вон в яве вагон багов вообще нашли. С выполнением кода и прочая.
будем юзать)
юзаем давно, спасибо разработчикам что думают не только о себе
Ну... практического применения эта уязвимость никак не получит, поскольку чтобы реально подменить сессию нужно:
1. угадать с точностью до миллисекунд время захода юзеря
2. узнать точное время старта системы и обнуления этого самого счетчика
3. знать точное количество и их время срабатывания генератора этих самых случйных чисел.Только в этом случае тело может "угадать" идентификатор сессии, создать у себя такую же куку и зайти в систему под этим юзерем.
А если в сессии имеется еще какой идентификатор, например от юзер-агента браузера, то к списку еще прибавляется обязятельное знание каким браузером и какой его версией зашло тело.
В общем, такое тело существовать не может или же оно является админом. А если, допустим, есть пароль рута (т.е. сломали), то на кой ляд нужны эти танцы с сессиями?
>1. угадать с точностью до миллисекунд время захода юзеряВ статье же вроде про секунды написано, в этом случае угадать не так сложно, с учетом того, что на куче форумов можно посмотреть время нахождения юзера в online.
>2. узнать точное время старта системы и обнуления этого самого счетчика
>3. знать точное количество и их время срабатывания генератора этих самых случйных
>чисел.По выданному сессионному id можно без проблем подобрать эти параметры.
>А если в сессии имеется еще какой идентификатор, например от юзер-агента браузера,Там речь про дефолтные механизмы работы с сессиями.
мало ли что в статье... а добавили миллисекунды. и еще... как по session_id() вычислить точное время старта системы и количество генераций? ведь сайтом в этот момент пользуются еще люди... их генерации тоже надо учитывать.
Так что это все смахивает на бред параноика.
можно же и побрутфорсить немного :)
http://blog.ptsecurity.com/2012/08/not-so-random-numbers-tak...
не только возможно, но даже софт для этого можно скачать, с которым подбор значения session_id - меньше часа :)
Так. Во Фряхе, Убунте и Дебиане php по-дефолту ставится с Suhosin-patch, что исключает возможность такого хака. Про другие дистры не знаю.
>Так. Во Фряхе, Убунте и Дебиане php по-дефолту ставится с Suhosin-patch, что
>исключает возможность такого хака. Про другие дистры не знаю.В pkgsrc-системах (NetBSD, DragonFly BSD…) и OpenBSD тоже.
В джэйле сухосин не работает. GG
>В джэйле сухосин не работает. GGХм. За jail не скажу, а в chroot на моих опёнковских серверах он чувствует себя прекрасно... В чём проблема с jail?
> что исключает возможность такого хака.Вот в такие моменты и появляется желание сказать спасибо майнтайнерам за то что они есть.