DoS сервера при хранении сессий в Memcached простым запросом с Cookie

confguru

ExAdmin
Команда форума
При рефакторинге нашего фреймворка случайно послали SID превышающий разрешенный размер. Скрипт задумался, надолго. Профилирование показало что выполнение функции session_start заняло 30 секунд. Трейс процесса показал, что скрипт висит в цикле ровно max_execution_time установленный в настройках PHP, дальше возвращает -1 и процесс продолжает работу без ексепшенов и ошибок. Дальнейшее копание привело к PECL модулю Memcached, а тот уже показал что нет проверки SID на длину и спец. символы.

Мы связались с Andrei Zmievski, на выходных он закомитил фикс, рекомендуем обновиться.

Лок исполнения возможен только при использование memcached скомпилированного с поддержкой хранения сессий и установки параметров php.ini в:

session.save_handler = memcached
session.save_path = "blackgold:11211"

Скачать последний extension можно
https://github.com/php-memcached-dev/php-memcached, в PECL все ещё старая версия.

Источник: http://habrahabr.ru/blogs/php/115983/#habracut
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Видел, не обновлялся, лень. Мемкеш не юзаю у себя, но забукмаркил. На всякий пожарный.
 
Сверху