天空小小岛技术网站
标题:
通过构造Hash冲突实现各种语言的拒绝服务攻击及补丁下载地址
[打印本页]
作者:
一粒米
时间:
2011-12-31 14:32
标题:
通过构造Hash冲突实现各种语言的拒绝服务攻击及补丁下载地址
攻击的原理很简单, 目前很多语言, 使用hash来存储k-v数据, 包括常用的来自用户的POST数据,
攻击者可以通过构造请求头, 并伴随POST大量的特殊的”k”值(根据每个语言的Hash算法不同而定制),
使得语言底层保存POST数据的Hash表因为”冲突”(碰撞)而退化成链表.
Untitled3.png
(11.28 KB, 下载次数: 582)
下载附件
保存到相册
2011-12-31 14:26 上传
这个攻击方法危害很高, 攻击成本也很小. 一个台式机可以轻松搞垮数十台, 上百台服务器.
实例:
<?php echo '<pre>';
$size = pow(2, 16); // 16 is just an example, could also be 15 or 17
$startTime = microtime(true);
$array = array();
for ($key = 0, $maxKey = ($size - 1) * $size; $key <= $maxKey; $key += $size) {
$array[$key] = 0;
}
$endTime = microtime(true);
echo 'Inserting ', $size, ' evil elements took ', $endTime - $startTime, ' seconds', "\n";
$startTime = microtime(true);
$array = array();
for ($key = 0, $maxKey = $size - 1; $key <= $maxKey; ++$key) {
$array[$key] = 0;
}
$endTime = microtime(true);
echo 'Inserting ', $size, ' good elements took ', $endTime - $startTime, ' seconds', "\n";
复制代码
php 受影响的版本:<= 5.3.8, <= 5.4.0RC3
补丁下载:
大家如果有用5.2的, 如果被此类攻击威胁, 可以打上下面的patch,
PHP5.3的, 可以考虑升级到5.3.9, 已经包含了此patch(因为5.3.9目前是RC状态, 所以如果不愿意升级, 也可以参照这个patch自己为5.3写一个):
https://github.com/laruence/laru ... -5.2-max-input-vars
另外, 其他语言java, ruby等, 请各位也预先想好对策, 限制post_size是治标不治本的方法, 不过可以用来做临时解决方案.
参考文章:
http://nikic.github.com/2011/12/ ... ng-a-PHP-array.html
http://www.laruence.com/2011/12/30/2440.html
http://www.ocert.org/advisories/ocert-2011-003.html
攻击实例:
欢迎光临 天空小小岛技术网站 (http://tkxxd.net/)
Powered by Discuz! X3.1