Edit report at https://bugs.php.net/bug.php?id=55439&edit=1
ID: 55439
Updated by: stas@php.net
Reported by: jo at feuersee dot de
Summary: crypt() returns only the salt for MD5
-Status: Assigned
+Status: Closed
Type: Bug
Package: *Encryption and hash functions
Operating System: Linux
PHP Version: 5.3.7RC5
Assigned To: stas
Block user comment: N
Private report: N
New Comment:
This bug has been fixed in SVN.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
For Windows:
http://windows.php.net/snapshots/
Thank you for the report, and for helping us make PHP better.
fixed, thanks
Previous Comments:
------------------------------------------------------------------------
[2011-08-19 22:49:11] stas@php.net
Automatic comment from SVN on behalf of stas
Revision: http://svn.php.net/viewvc/?view=revision&revision=315218
Log: Unbreak crypt() (fix bug #55439)
# If you want to remove static analyser messages, be my guest,
# but please run unit tests after
------------------------------------------------------------------------
[2011-08-19 22:19:40] stas@php.net
Confirming, some very recent update broke it - right now unit tests fail on SVN. I
wonder if nobody run it before release?
------------------------------------------------------------------------
[2011-08-19 21:32:01] jo at feuersee dot de
Uhm ok the PHP code wasn't correct but I think you get the point:
If crypt() only stores the salt then crypt($pw, $salt) will return the salt and comparing this to
$pw is useless as the salt is a constant regardless of $pw.
------------------------------------------------------------------------
[2011-08-19 21:16:03] jo at feuersee dot de
Verified for PHP5.3.7
> php -v
PHP 5.3.7 (cli)
> php -r 'printf("%s\n", crypt("password"));'
$1$p4uaO1jN
Note that only the salt is returned.
AFAIK MD5 is the default encryption type.
The big problem is that if an application stores this hashes in a database and uses them for
authentication, the problem with this bug is that
$valid = crypt($pw, $crypt);
will always be TRUE regardless of $pw
We do have a serious problem here. I suggest recalling 5.3.7 and go for a 5.3.7pl1
------------------------------------------------------------------------
[2011-08-19 11:15:37] pajoye@php.net
stas, could you look at this issue please? It could be related to our latest
changes there.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=55439--
Edit this bug report at https://bugs.php.net/bug.php?id=55439&edit=1