WordPress自動更新服務器爆出漏洞
互聯網上所有網站的逾四分之一有可能因一個之前已打上補丁的安全漏洞而受到危及,這個漏洞會讓WordPress的核心更新服務器岌岌可危。
之前就已堵上的遠程代碼執行漏洞出現在api.wordpress.org里面的一個php Web鉤子(webhook),這個鉤子讓開發人員得以提供一種他們所選擇的哈希算法,以證實代碼更新是合法有效的。
WordPress安全公司WordFence的首席開發員馬特·巴里(Matt Barry)發現,攻擊者可以提供其自己的安全性極其薄弱的哈希算法,作為這個驗證過程的一部分,從而讓共享密鑰得以在幾個小時的期間遭到蠻力攻擊。
企圖猜測的速度非常小,小到足以不會引起WordPress安全系統的注意。
鉆這個漏洞空子的攻擊者隨后可以將URL發送到WordPress更新服務器,這些URL被接受后,被發送到所有的WordPress網站?;ヂ摼W監管服務網站W3techs.com估計,那些網站占整個互聯網的27.1%。
巴里說:“通過攻陷api.wordpress.org,攻擊者就有可能一下子攻陷全球四分之一以上的網站,這種情形是可以想象的?!?/p>
“我們分析了WordPress的代碼,結果發現一個安全漏洞可能讓攻擊者得以在api.wordpress.org上執行自己的代碼,并獲得對它的訪問權?!?/p>
“攻陷這臺更新服務器會讓攻擊者得以提供自己的URL來下載軟件,并安裝到WordPress網站上,這一切是自動的?!?/p>
攻擊者可以采取進一步的措施;一旦被植入后門的更新版或惡意的更新版分發出去,它們可能會禁止默認的自動更新,阻止WordPress修復那些中招的網站。
巴里表示,WordPress并未使用簽名驗證技術來檢查有待安裝的更新版,而是信任所有URL和api.wordpress.org提供的軟件包。
WordPress的哈希驗證過程可能會受到削弱,讓攻擊者得以使用POST參數原樣未轉義傳遞到shell_exec,授予遠程代碼執行權限,從而危及api.wordpress.org更新服務器。
巴里選擇了薄弱的adler32哈希算法,大大減少了處理密碼可能所需的哈希數量:從43億個(232)驟減到100000個至400000個。
巴里說:“這個猜測數量管理起來要容易得多,我們需要將這些猜測發送到api.wordpress.org上的Web鉤子,可能會在幾小時內發送完畢。一旦Web鉤子允許請求,攻擊就會在api.wordpress.com上執行外殼命令,從而讓我們得以訪問底層的操作系統,api.wordpress.org因此中招。”
9月2日,巴里將這個安全漏洞報告給了WordPress的開發者Automattic,五天后就發布了修正版。
不過他仍認為api.wordpress.org是導致依賴其服務器來更新的數百萬WordPress網站面臨險境的單一故障點。
他表示,自己提出請求,希望探討這個故障點,而且需要為更新版提供一種驗證機制,但是Automattic并沒有作出回應。
巴里并非唯一擔心缺乏控制的安全研究人員。本周OpenWall安全郵件列表上的探討描述了理論上的攻擊,與這位研究人員近日披露的攻擊非常相似。
不過這個想法可以追溯至三年前,當時一個用戶提議,應該對更新版實行簽名制,可是迄今為止這個想法仍被忽視。