天天看點

Memcached遠端代碼執行漏洞預警一、漏洞基本資訊二、漏洞原理分析三、漏洞檢測方法四、漏洞修複方案五、參考資料

一、漏洞基本資訊

CVE編号:

CVE-2016-8704 - Memcached Append/Prepend 遠端代碼執行漏洞

CVE-2016-8705 - Memcached Update 遠端代碼執行漏洞

CVE-2016-8706 - Memcached SASL身份驗證遠端代碼執行漏洞

漏洞釋出日期:2016.10.30

受影響的軟體及系統:Memcached < 1.4.33

漏洞概述:利用該漏洞黑客可以竊取在Memcached中存放的業務資料,或導緻Memcached服務崩潰進而造成拒絕服務等危害,同時可導緻遠端代碼執行,攻擊者可以通過向伺服器發送一個精心構造的Memcached指令實作該漏洞的利用。此外,這些漏洞還可以洩露敏感的程序資訊,并且可以多次觸發,利用這些敏感的程序資訊,攻擊者可以繞過像ASLR等常見的漏洞緩解機制。

二、漏洞原理分析

   memcached是一個自由開源的,高性能,分布式記憶體對象緩存系統。它是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric為首開發的一款軟體。現在已成為mixi、hatena、Facebook、Vox、LiveJournal等衆多服務中提高Web應用擴充性的重要因素。Memcached是一種基于記憶體的key-value存儲,用來存儲小塊的任意資料(字元串、對象)。這些資料可以是資料庫調用、API調用或者是頁面渲染的結果。本質上,它是一個簡潔的key-value存儲系統。

   一般的使用目的是,通過緩存資料庫查詢結果,減少資料庫通路次數,以提高動态Web應用的速度、提高可擴充性。 2016年10月31日Memcached釋出安全更新檔修複多個遠端代碼執行漏洞,利用該漏洞黑客可以竊取在Memcached中存放的業務資料,或導緻Memcached服務崩潰進而造成拒絕服務等危害,安全客提醒使用者應當及時更新官方版本至1.4.33版本。

   雖然Memcached文檔中已經強烈建議将Memcached服務配置在可信任的網絡環境中,但是仍有大量的Memcached服務可以在公網中直接通路。 此外,即使Memcached部署在内網中,企業的安全管理人員仍然不能忽視此次更新的安全問題,黑客可能通過内網滲透、SSRF漏洞等,直接對部署在内網的服務發起攻擊。  這些漏洞存在于用于插入(inserting)、附加(appending,)、前置(prepending)、修改鍵值對的函數中,在SASL身份驗證位置也存在問題。利用資料類型的不一緻性觸發整數溢出,再由整數溢出導緻堆溢出。其運作流程也極其相似,都是先由dispatch_bin_command函數來讀取conn中的資料,并将conn->state設定為conn_nread,最後通過不同的substate來對應完成不同的功能。是以,如果不想對每個函數進行改正的話,可以通過在dispatch_bin_command開始對輸入進行驗證來修補這3個漏洞,這樣做的好處是,通過這個更新檔可以将可能出現的類似原因和流程的同類型漏洞一次性封殺。

三、漏洞檢測方法

1 網上線上檢查

https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?service_id=1026

2、手動直接檢測

lsb_release -apkg -l | grep -i memcached # 在debian等系列  

rpm -qa | grep -i memcached  # 在redhat、centos、ubuntu等系列 # 根據版本的大小進行比對。

3Web指紋處檢索“phpmyadmin”

“端口與服務”檢索服務“memcached”,檢查網際網路側是否打開了memcached 服務

四、漏洞修複方案

1.更新官方最新版本:1.4.33版本 http://www.memcached.org/files/memcached-1.4.33.tar.gz

2.限制Memcached 11211端口通路權限(如:禁止外網通路、僅限特定端口通路)

3.緩解措施: 對memcache進行加強處理,加強方法如下:

安全啟動 

建立作業系統普通賬号安全運作memcache,禁止以管理者(root)權限運作 #useradd memcached -d /home/memcached -m           #建立普通使用者

限制memcache隻監聽内網IP "#/usr/local/memcached/bin/memcached -u memcached -l 内網IP位址  #啟動服務 

備注:内網IP位址請自行修改,一般限制為web伺服器的内網IP位址"

端口通路限制 

Memcached沒有配置認證選項,未授權使用者可直接擷取資料庫中所有資訊,必須根據最小化原則對端口和IP進行限制 "#iptables -A INPUT -p tcp -s 來源IP位址 --dport 11211 -j ACCEPT

#iptables -A INPUT -p tcp --dport 11211 -j DROP

#iptables -A INPUT -p udp --dport 11211 -j DROP

注:來源IP位址請自行根據需要修改;memcached預設監聽端口為11211(TCP&UDP),若業務修改成其他端口,這裡也要作對應修改;禁止UDP通路。"

五、參考資料

https://github.com/memcached/memcached/wiki/ReleaseNotes1433

http://blog.talosintel.com/2016/10/memcached-vulnerabilities.html

http://www.talosintelligence.com/reports/TALOS-2016-0219/

http://www.talosintelligence.com/reports/TALOS-2016-0220/

http://www.talosintelligence.com/reports/TALOS-2016-0221/ http://bobao.360.cn/learning/detail/3151.html

歡迎大家分享更好的思路,熱切期待^^_^^ !