)由我前面的俩篇文章介绍(通过构造Hash冲突实现各种语言的拒绝服务攻击, PHP数组的Hash冲突实例 ), 这个攻击方法危害很高, 攻击成本也很小. 一个台式机可以轻松搞垮数十台, 上百台服务器.
而和Pierre沟通后, 官方开发组不会为此发布PHP 5.2.18, 但是目前还是由不少公司还在使用5.2, 所以我特将dmitry为5.4写的patch, 分别apply到5.2上.
大家如果有用5.2的, 如果被此类攻击威胁, 可以打上下面的patch, PHP5.3的, 可以考虑升级到5.3.9, 已经包含了此patch(因为5.3.9目前是RC状态, 所以如果不愿意升级, 也可以参照这个patch自己为5.3写一个):
https://github.com/laruence/laruence.github.com/tree/master/php-5.2-max-input-vars
补充一下(2012年1月8日): 如果你使用的是Windows下的PHP, 或者其他原因导致你不方便采用打patch的方法, 也可以采用修改PHP的配置max_input_time为一个较小的值来缓解此类攻击带来的影响.
另外, 其他语言java, ruby等, 请各位也预先想好对策, 限制post_size是治标不治本的方法, 不过可以用来做临时解决方案.
thanks
[...] http://www.laruence.com/2011/12/30/2440.html [...]
已经使用。非常不错
5.2.17使用还比较广泛
Hello Laruence,
您好, 首先謝謝您的回覆, 有少少問題欲請教 –
在您的 5.2.17 patch 裡, 於 php_error_docref , 您使用了 E_ERROR (而不是 PHP 5.3.9 原本的 E_WARNING)
我們驗過, 似乎 E_ERROR 是會中止 c 程式執行,所以沒有運行有問題的 Z_ARRVAL_PP;
而 E_WARNING (或 E_NOTICE) 是會讓 PHP 的 php_variables.c 程式繼續執行, 所以間接地牽涉的 Z_ARRVAL_PP
請多多指教。
謝謝
George
@George
hello, there is no such issue in this patch, so plz don’t worry.
Hello Laruence,
There were a related vulnerability CVE-2012-0830 for this patch.
May you mind to back-ported the change for PHP 5.2.17 too?
Thank you very much for your kind attention
Regards
George
@none 我为5.2提供的patch, 不受此影响. thanks
please fix this bug https://bugs.php.net/bug.php?id=60708 in you https://github.com/laruence/laruence.github.com/tree/master/php-5.2-max-input-vars patch
centos下用yum安装的PHP能打补丁吗?都不知道怎么进入PHP src目录,求教!~
我打了5.2.17的补丁之后,php的session就无法保存了.
大致看了一下应该是cookie的session id 无法映射到服务器里面的session值….
每当页面跳转的时候session值就全部丢失了?会是什么原因造成的.
[...] 在之后laruence放出了PHP对应的补丁,以解决这一问题. [...]