首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 5.2.x 防禦 Hash 碰撞拒絕服務攻擊的 Patch 方案

     編輯:PHP 相關知識

漏洞緣起與官方因應

上週 Dmitry 在 PHP 5.4 即將釋出前夕,引入新設定項 max_input_vars:

Added max_input_vars directive to prevent attacks based on hash collision

此舉針對「透過 Hash 演算法碰撞實現多種語言拒絕服務攻擊漏洞」。攻擊原理簡單:多種語言使用 Hash 表儲存鍵值資料(含使用者 POST 資料),攻擊者依語言 Hash 演算法構造大量特製「鍵」值,導致底層 Hash 表因碰撞退化為鏈表,使插入、查找、計算產生大量 CPU 佔用,實現 DoS。

PHP 5.4 內建防護機制

PHP 5.4 透過限制輸入變數數量緩解攻擊:

max_input_vars - specifies how many GET/POST/COOKIE input variables may be accepted. default value 1000

PHP 5.2.x 手動 Patch 方案

若仍使用 PHP 5.2 且面臨攻擊威脅,可套用以下 Patch:

套用步驟

  1. 進入 PHP 原始碼目錄:patch -p1 < php-5.2.*-max-input-vars.patch
  2. PHP 5.3 使用者可升級至 5.3.9 RC4(已含修補),或參考此 Patch 自行移植至 5.3

Patch 取得位置

可從 GitHub 專案頁面 下載 Patch 檔案。

補充說明

此 Patch 實作與 PHP 5.4 內建的 max_input_vars 邏輯一致,透過在輸入解析階段計數並限制變數總數,從根源阻斷 Hash 碰撞攻擊的放大效應。建議所有無法升級至 PHP 5.4+ 的舊版部署環境儘快套用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved