On 16 January 2017 at 07:04, Yasuo Ohgaki <yohg...@ohgaki.net> wrote:
> Hi all,
>
> Since I was about to improve uniqid()'s entropy by replacing
> php_combined_lcg() to php_random_int(), I spent time to check other places
> that could be a problem.
>
> mt_rand()'s is seeded as follows by default.
>
> ext/standard/php_rand.h
> #ifdef PHP_WIN32
> #define GENERATE_SEED() (((zend_long) (time(0) * GetCurrentProcessId())) ^
> ((zend_long) (1000000.0 * php_combined_lcg())))
> #else
> #define GENERATE_SEED() (((zend_long) (time(0) * getpid())) ^ ((zend_long)
> (1000000.0 * php_combined_lcg())))
> #endif
>
> We know this kind of seed is guessable. i.e. Our session id is compromised
> by this kind of code.

mt_rand is not advertised as crypto-quality.

Where do you think mt_rand is used in session id generation?

>
> Although it would be rare that raw mt_rand() value is exposed, but
> guessable value is guessable. I'm going to replace the seeding code by
> simple php_random_int() call.
>
> Any comments?
>
> Regards,
>
> --
> Yasuo Ohgaki
> yohg...@ohgaki.net

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to