當前位置:
首頁 > 新聞 > Optionsbleed 漏洞泄露 Apache Server 的內存信息

Optionsbleed 漏洞泄露 Apache Server 的內存信息

本周一安全研究員 Hanno B?ck 發現,部分 Apache 伺服器可能因 Optionsbleed 漏洞(CVE-2017-9798)泄漏伺服器內存信息。實際上這個漏洞和 OpenSSL 的心臟滴血問題有相似的地方,攻擊者都可以查詢伺服器並向Apache伺服器騙取數據。目前該漏洞原因已經探明,評級為中危,影響的範圍有限,運行 Apache Web 伺服器的用戶請升級至最新版本並安裝補丁。【補丁見原文】


B?ck 表示 Optionsbleed 在嚴重性上比不上 Heartbleed,因為Optionsbleed 僅僅會在 Apache web 伺服器進程中泄露信息,而不是泄漏所有全部的數據內容。也就是說,泄漏的數據內容僅限於Apache正在處理的內容,一般只是 WWeb 頁面的內容。儘管如此危險仍然存在,因為 Optionsbleed 依然可能泄漏原本只有認證用戶才可獲取的特定頁面內容。


Optionsbleed 如何影響伺服器


我們都知道Web伺服器的工作原理,每當客戶端(如Web瀏覽器)向伺服器發出請求時,GET 或 POST 請求會發送到伺服器端,伺服器響應就會傳送 Web 頁面的內容或相應的文件到客戶端。

而 Apache 伺服器能夠響應很多其他的請求(方法)——例如 PUT,PATCH,HEAD 以及其他方法。而這些請求是隨著時間發展慢慢添加進來的,並非所有的 Apache 伺服器都可以支持。因此,部分的伺服器管理員可能會禁止部分方法。而為了避免發送給伺服器的請求進入「黑洞」,Apache 伺服器支持名為 OPTIONS 的方法。客戶端可以通過 OPTIONS 方法請求查詢伺服器能夠響應的HTTP方法,而伺服器則會返還一串以逗號分隔的支持方法的名字。



Optionsbleed 漏洞發現過程


這次 Optionsbleed 的漏洞發現源於研究員 B?ck 進行的一項測試,他掃描了 Alexa 排名前 100 萬的網站,來看看哪些網站使用支持 OPTIONS 的 Apache 伺服器。而測試結果顯示,466 台主機響應了與下述內容相似的亂碼回復。



Allow: ,GET,,,POST,OPTIONS,HEAD,,

Allow: POST,OPTIONS,,HEAD,:09:44 GMT


Allow:GET,HEAD,OPTIONS,,HEAD,,HEAD,,HEAD,, HEAD,,HEAD,,HEAD,,HEAD,POST,,HEAD,, HEAD,!DOCTYPE html PUBLIC 「-//W3C//DTD XHTML 1.0 Transitional//EN」 「http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd「


Allow:GET,HEAD,OPTIONS,=write HTTP/1.0,HEAD,,HEAD,POST,,HEAD,TRACE


可以看到,除了正常的的 Allow 響應之外,其中的這 466 台伺服器還答覆了一些隨機數據,看起來像網頁的源代碼——這些就是所謂的泄漏內容了。 B?ck 發現自己無法重現問題並找到關鍵所在,所以他立即向Apache安全團隊彙報了自己的發現。

隨後,Apache 開發人員 Jacob Champion 協助進行調查之後發現,Apache 源代碼中存在 Optionbleed 漏洞,展開修補後立即提供了補丁文件。


Optionsbleed 漏洞隻影響少量伺服器


在進行深入調查 Optionsbleed 之後, B?ck 和 Champion 發現 Optionsbleed 在危險性上遠遠不如此前OpenSSL導致的心臟滴血問題(Heartbleed)。問題出現的前提是——管理員在伺服器配置的.htaccess 文件中應用了 「Limit」 選項。

< Limits PATCH PUT DELETE >
Deny from all
< /Limits >

一般,伺服器管理員將 .htaccess 文件放在 Apache 伺服器文件夾中,以便設置僅適用於該文件目錄的規則。而伺服器所有者使用 .htaccess 的 「Limit」 選項來控制伺服器單獨在該文件夾中應答的請求。

B?ck 和 Champion則表示,如果.htaccess文件的規則與放置在上層目錄或普通伺服器配置中的.htaccess文件中的限制規則相矛盾時,Apache 就會陷入混淆,因此出現 Optionsbleed 漏洞。


從技術角度來看,這是一個 

use-after-free 

的漏洞,會在 Apache 伺服器附近的內存區域泄漏出內容。


漏洞測試腳本



最簡單的測試方法是在循環中使用 Curl 發送OPTIONS 請求:
for i in {1..100}; do curl -sI -X OPTIONS https://www.google.com/|grep -i 「allow:」; done


不同的伺服器配置下,對於OPTION請求可能會有不同的響應。需要測試的用戶可以嘗試不同的路徑,HTTP或者 HTTPS host,有 www 或沒有 www開頭的地址都可能導致不同的測試結果。

python的POC腳本【閱讀原文】


問題從 2014 年開始就存在


也有其他用戶指出,這個問題此前在2014年時曾被 Old Dominion University 的研究員發現過並寫在論文中。


但目前來看 Apache Web 伺服器團隊還沒有發布新的二進位文件,目前可用的補丁文件適用於2.4.x和2.2.x版本。

而對於運行在共享環境中的Apache伺服器,由於多個用戶在同一台機器上都不輸了不同的.htaccess文件,最有可能受到 Optionsbleed 漏洞影響。建議所有伺服器儘快安裝補丁。


*本文作者:Elaine,轉載請註明FreeBuf.COM


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

如何將Pastebin上的信息應用於安全分析和威脅情報領域
卡巴斯基:「連接醫療」(Connected Medicine)的安全隱患及其安全建議
Face ID是否使iPhone X更安全?答案可能取決於你自己

TAG:FreeBuf |