php 5.2.* 如何解決Hash Collision

前一陣子出現個名詞Hash Collision。接者Hash Collision DoS這名詞跟者出現,而後就看到很多系統、語言開始出現更新patch。 XD

Hash Collision影響範圍有多廣,可以參考oCERT.org - oCERT Advisories。裡面列出受到影響的語言、系統,以及目前的狀況。以php為例,5.3.9後、或5.4.0RC4後的版本才修正此狀況。

可以更新的語言或系統,就請自己更新…如果不再上面的,就比較麻煩了… :(

以php 5.2.x為例。出了PHP 5.2.16時,PHP官方指出該版本是php 5.2.x 的最後一版,往後將不再維護。雖然,沒多久因為一個重大問題,又馬上出了PHP 5.2.17。但…這次聽說不會因為Hash Collision出新版本更新此問題。

只好找治標的方式來防止。PHP的參數中和Hash Collision攻擊有關的php參數有兩個

可以藉由這兩個參數,"降低"被攻擊時的影響。不過,調整參數max-input-time時需要注意。被修改設定的主機,是否會接受client上傳圖檔?如果有,這個時間就需要拿捏了… 避免圖檔上傳的時間超過了設定時間。

雖然PHP官方不提供patch,不過…如FreeBSD還是有提供。詳見CVS log for ports/lang/php52/distinfo。如果您是使用FreeBSD就趕緊更新吧。更新後的版本為PHP 5.2.17_5。
附註:FreeBSD版本的php,max-input-time預設值不是 -1 ,卻是60秒。

或者,參考下方參考資料中PHP5.2.*防止Hash冲突拒绝服务攻击的Patch的作法。

參考資料

留言