PHP mcrypt_create_iv不安全加密实现漏洞
发布日期:2007-05-15
更新日期:2007-05-16
受影响系统:PHP PHP <= 5.2.1
描述:
BUGTRAQ ID:
23984
PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。
PHP生成随机加密种子的算法上存在漏洞,远程攻击者可能利用此漏洞获取非授权访问。
PHP的mcrypt_create_iv()函数以未初始化的变量做为种子调用php_rand_r(),导致生成器反复生成相同的IV,具体取决于系统的栈结构。在某些情况下栈结构可能导致生成完全可预测的种子,因此也会生成可预测的IV,而非随机的IV会导致较弱的加密算法。
<*来源:Stefan Essar
链接:
http://bugs.php.net/bug.php?id=40999
http://blog.php-security.org/archives/80-Watching-the-PHP-CVS.html
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
srand((double) microtime(true) * 1000000);
$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, NULL, MCRYPT_MODE_CFB,
NULL);
echo "iv1: " . bin2hex(mcrypt_create_iv(mcrypt_enc_get_iv_size($module),
MCRYPT_RAND)) . "\n";
echo "iv2: " . bin2hex(mcrypt_create_iv(mcrypt_enc_get_iv_size($module),
MCRYPT_RAND)) . "\n";
echo "iv3: " . bin2hex(mcrypt_create_iv(mcrypt_enc_get_iv_size($module),
MCRYPT_RAND)) . "\n";
预期结果
----------------
3 random hex strings. e.g.,
iv1: 3e280c689f08c1a6e7993e41040eec1b
iv2: caa3b8ae0241995d36a346904b7672bf
iv3: a4d25fe39436d72b96cf68efe7ceb1a5
实际结果
--------------
iv1: a67ed3dd28eb59be57bbfee36f75df52
iv2: a67ed3dd28eb59be57bbfee36f75df52
iv3: a67ed3dd28eb59be57bbfee36f75df52
建议:
厂商补丁:
PHP
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.fortheloot.com/public/mcrypt.patch浏览次数:2834
严重程度:0(网友投票)