許多人沒有想到,去年12月一件不起眼的小事,在新年伊始卻演變成了一場屠殺。如今,受害的一方似乎正由于自身的疏忽和遲鈍而顯得愈發無力反抗,一個接一個倒下。
截止本周三(1月11日),已經有20名以上的黑客加入到這場對MongoDB用戶一邊倒的碾壓中來,遭到入侵、勒索的數據庫超過了33,000個,并且這一數字還在不斷上升中。(源自凱捷咨詢的Niall Merrigan提供的數據)MongoDB是目前包括eBay,紐約時報,LinkedIn在內的全世界多家公司廣泛采用的數據庫。
源于0.2比特幣的勒索
去年12月27日,安全專家兼GDI Foundation聯合創始人Victor Gevers(@0xDUDE)在Twitter上稱由于存在配置漏洞,可不通過任何認證直接訪問某些MongoDB數據庫,而黑客早已盯上了這些目標。當時,第一波被黑的MongoDB數據庫中,Gevers觀察到數據內容被清空,黑客還留下了一條“WARNING”信息:
“SEND 0.2 BTC TO THIS ADDRESS 13zaxGVjj9MNc2jyvDRhLyYpkCh323MsMq AND CONTACT THIS EMAIL WITH YOUR IP OF YOUR SERVER TO RECOVER YOUR DATABASE !”
意思就是:要求支付0.2比特幣到指定地址用以還原數據。署名“Harak1r1”的黑客(或組織)大肆入侵了MongoDB數據庫,清空里面的內容并向擁有者索要0.2比特幣(約$211)的贖金,否則數據將不予歸還。Gevers發現了這次攻擊并隨即在Twitter上警告了MongoDB數據庫用戶。遺憾的是,這份警告并沒有引起MongoDB使用者足夠的重視。而嗅覺敏銳的黑客們卻迅速地圍了上來,盛宴開始。
MongoDB屠戮全面開啟
當時Gevers暫時只統計到了有近200個MongoDB數據庫實例(instance)被黑客入侵當做勒索籌碼。FreeBuf安全快訊對此進行了追蹤報道,在1月3日,這個數字達到了2,000以上。接下來的日子里,攻擊規模不斷擴大,受害者數量急劇上升。僅在1月9日早間開始的12小時內,受到黑客勒索的數據庫就從12,000個翻倍達到了27,633之多。
參與其中的黑客數量也增加到至少15人以上,其中一位名為“kraken0”的黑客已經入侵了15,482個MongoDB數據庫并向每位受害者索取了1比特幣(約$921)贖金。盡管安全專家已經告誡眾多MongoDB數據庫用戶不要向黑客支付贖金(很多黑客并不會如宣稱的那樣保留了數據,多數情況是直接刪掉了),但已知仍有至少22個受害機構或個人繳納了贖金。
之所以會有如此眾多的數據庫實例被這次沖擊迅速收割,主要是因為很多使用者沒有遵照生產環境部署手冊,缺少安全認證,直接將服務器暴露在公網里以及版本過于老舊。對于攻擊者而言,使用在線工具就可以較輕松地發現存在問題的數據庫。事實上,黑客還發掘到了另一個商機:他們有人開始販賣用來攻陷數據庫的軟件賺錢。這種工具被稱作“Kraken Mongodb ransomware”,只要價值$200的比特幣就可以買到該程序的C#源碼。
產生如此后果的另一個重要原因是部分使用者安全意識淡薄,反應遲鈍。作為最初發現者的Gevers就曾對SecurityWeek這樣吐槽:
“永遠不要低估某些公司的反應有多么愚蠢,有些只是移除了勒索信息,還原了數據,卻依舊讓服務器門戶大開。”
Gevers有所怨言是不無道理的。作為安全專家,他長時間致力于數據庫漏洞探測并會向企業提供風險報告。然而,他的預警卻被許多公司視而不見,僅在去年一年就有138份相關報告石沉大海。即使他對這波攻擊迅速做出了告警,卻依然收效甚微。
安全組織“ShadowServer”通過AISI(Australian Internet Security Initiative)每天約提供400個MongoDB數據泄漏預警,服務澳洲90%的網絡提供商
暗潮涌動
輕視安全問題是要付出代價的。事實上MongoDB數據庫泄漏問題早在2015年就被報導過。當時Shodan(搜索引擎)的負責人John Matherly統計到有30,000個以上的MongoDB數據庫實例,近600TB的數據暴露于公網之上,無需任何認證就可訪問。很多版本滯后的數據庫配置文件里沒有做IP捆綁(bind_ip 127.0.0.1),在用戶不甚了解的時候留下了安全隱患。雖然MongoDB的開發團隊在下一個版本里修復了這個問題,但截止事發,仍然有數量眾多的數據庫管理者沒來得及更新。
這次勒索事件的一個顯著后果就是世界范圍內存儲在MongoDB數據庫里數據量的大幅下滑。據Merrigan提供的信息顯示,在短短3天內就有114.5TB的數據因此消失。據估計,目前網上約有50,000個開放訪問的MongoDB數據庫,也許用不了多久所有沒做好安全措施的數據庫都會被黑客攻陷。這個過程需要多久?據Gevers估算,這個過程可能用不了幾周。
毫無疑問,黑客們的瘋狂給人們敲響了警鐘。現在應該會有很多人后悔了。
現在補救還來得及
Gevers確認,目前已有來自包括IP,醫療,金融服務,旅游等行業在內的多家公司就此次攻擊事件求助,但他不愿意透露求助企業的名稱。他建議:有時一個數據庫會被不同的黑客攻擊多次,受害者很有可能把贖金給錯了人,這更是一個無底洞。因此不僅不要支付贖金,更要想辦法讓攻擊者證明丟失的數據是否還真實存在。Gevers表示,如果有適當的網絡監控程序,可以判斷丟失的數據是被轉移了還是被直接刪掉了。不過這樣做需要把出站的數據流量同系統日志里的訪問記錄做多方面比較才行。
MongoDB官方建議如下:
如何知道自己有沒有受到攻擊:
1. 如果已經為數據庫正確配置了訪問控制,攻擊者應該訪問不到數據,可參考安全手冊(https://docs.mongodb.com/manual/security/)
2. 驗證數據庫和集合。在最近的案例中,攻擊者丟棄了數據庫和/或集合,并用一個ransom需求的新的替換它們。
3. 如果啟用訪問控制,請審核系統日志以進行未經授權的訪問嘗試或可疑活動。
如果已經受到攻擊:
1. 如果您是MongoDB企業支持客戶,請盡快提交P1訂單,我們的技術服務工程師可以指導您完成以下過程。
2. 您的首要任務是保護您的集群以防止進一步的未授權訪問。您可以參照我們的安全實踐文檔。
3. 通過運行 usersInfo 來檢查是否有添加,刪除或修改的用戶。
4. 檢查日志以查找攻擊的時間。檢查是否有刪庫或者刪表,修改用戶或創建贖金記錄的命令。
5. 如果你有定期對受損數據庫進行備份,則可以還原最近的備份。您需要評估最近的備份和攻擊時間之間可能已更改的數據量。如果您使用Ops Manager或Cloud Manager進行備份,則可以恢復到攻擊之前的時間點。
6. 如果您沒有備份或以其他方式無法還原數據,那么您的數據可能會永久丟失。
7. 您應該假設攻擊者已經復制了受影響的數據庫的所有數據。請按照內部安全流程對數據泄露事件進行恰當處理。
8. 最后,請參閱我們的安全最佳做法和資源,以便將來保護您的數據。
如何防范此類攻擊?
1. 做好訪問認證。打開你的MongoDB配置文件(.conf),設置為auth=true
2. 做好防火墻設置。建議管理者關閉27017端口的訪問。
3. Bind_ip,綁定內網IP訪問。