Не прошло и полугода…

Andreas Bogk порадовал репортом о слабости ГСЧ в любимом интерпретаторе.

Оригинал: http://seclists.org/fulldisclosure/2010/Mar/519

  1. Условия уязвимости:
  2. 5.3.2 и более ранние версии PHP
  3. Приложение использует стандартный механизм сессии
  4. Есть доступ к выводу функции uniquid()
  5. Злоумышленник знает адрес жертвы, сессию которой подбирает

Андреас обратил внимание на код, который генерит ид. сесии:

—- ext/session/session.c, php_session_create_id() —–
spprintf(&buf, 0, “%.15s%ld%ld%0.8F”,
remote_addr ? remote_addr : “”,
tv.tv_sec,
(long int)tv.tv_usec,
php_combined_lcg(TSRMLS_C) * 10);

switch (PS(hash_func)) {
case PS_HASH_FUNC_MD5:
PHP_MD5Init(&md5_context);
PHP_MD5Update(&md5_context,
(unsigned char *) buf,
strlen(buf));
digest_len = 16;
break;
———————————————————

где

remote_addr –  разделенный точками IP адрес пользователя

tv – структура с временем.

Остальное доперевожу и запощу завтра, устал..