有關MongoDB尚未解決的安全隱患是什么?在補丁可用之前,企業可以采取哪些措施以緩解這些威脅?
Matthew Pascucci:最近,網上有關MongoDB配置錯誤的攻擊正在加劇。攻擊者刪除原始數據庫并以備份件索要贖金,濫用這些MongoDB實例的身份驗證和遠程訪問。
這些及其他MongoDB安全誤配置和漏洞與補丁管理并不完全相關,較貼近配置管理領域。企業可采取措施來改善MongoDB的安全性,并保護數據庫免受攻擊。
這里的主要問題在于MongoDB的某些版本默認配置非常隨意。在這種情況下,責任在于安裝數據庫軟件的管理員,是因為他們沒有恰當的管理造成的。
在我看來,默認情況下所有軟件都應該被鎖定,且應該僅在需要時啟用某些功能。如果應用程序在默認情況下不執行此操作,并留有記錄,那么責任歸咎于管理員。由于較早版本的MongoDB的默認配置較隨意,因此數據庫管理員應該從驗證一些事開始著手。
改善MongoDB安全性的第一步是確定運行數據庫的服務器是否需要有任何入站連接。很多時候,這些數據庫是遠程安裝的,需要遠程管理員的訪問。MongoDB的默認端口為27017,如果不是只綁定到127.0.0.1,并且防火墻沒有被鎖定,則攻擊者能夠遠程訪問數據庫。
確保只打開了正確的端口,如無必要限制可以訪問系統、并從互聯網上刪除所有訪問的人員權限。另外,如果某些實例不得不通過互聯網打開以降低可見性,考慮使用VPN連接的可能性。
其次,確保驗證和運行數據庫的用戶身份有效。以前的一個問題是默認配置允許未經身份驗證的用戶通過互聯網訪問數據庫。強烈建議企業采取某種基于角色的訪問控制來限制特定用戶無法訪問的數據庫部分。
此外,運行數據庫的用戶帳戶不應對系統的其余部分擁有完整的管理員權限。將權限直接限制在應用程序中,可以抵御應用程序中可能出現的其他漏洞(如SQL注入)。
第三步是驗證數據庫中的數據在傳輸和存儲過程中都被加密。有一種叫做WiredTiger的本地加密可以在特定的MongoDB版本中使用,有助于保護數據庫中的數據。這不會有助于勒索軟件攻擊中發生的盜竊問題,但會讓被盜數據被使用。如果企業需要遠程訪問數據庫,則應通過TLS來實現以確保傳輸中的通信安全。
最后,日志記錄和審計、漏洞掃描、配置和補丁管理都是很好的做法,可以緩解相關安全問題。如果沒有對MongoDB實例或者真正的系統進行適當管理,可能會導致企業的安全風險升高,以致發生數據泄漏問題。