安全研究

安全漏洞
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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障