本文介紹Redis的CSRF漏洞是如何發生的,同時介紹Tair (Redis OSS-compatible)的安全措施。
CSRF介紹
CSRF(Cross-site request forgery)跨站請求偽造,也被稱為One Click Attack或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。
上圖為CSRF攻擊的一個簡單模型:使用者訪問惡意網站A,惡意網站A返回給使用者的HTTP資訊中要求使用者訪問網站B,而由於使用者和網站B之間可能已經有信任關係導致這個請求就像使用者真實發送的一樣會被執行。
Redis CSRF攻擊模型
根據上面CSRF的原理,惡意網站可以讓使用者發送一個HTTP請求給Redis。由於Redis支援文本協議,而在解析協議過程中如果碰到非法的協議並不會取消連結,這個時候攻擊者可以通過在正常的HTTP請求之後攜帶Redis命令從而在Redis上執行命令,而如果使用者和Redis之間沒有密碼驗證,則可以正常執行Redis命令並對資料進行加密勒索,就像之前MongoDB贖金事件一樣。
核心修複
Redis作者在3.2.7版本對該問題進行了修複,解決方案是對於POST和Host:的關鍵字進行特殊處理記錄日誌並斷開該連結避免後續Redis合法請求的執行。
Redis安全風險
更早之前Redis暴露了一個安全性漏洞,駭客在某一條件下可以拿到Redis服務的root許可權,這些安全性漏洞發生的原因主要是因為使用者對於Redis的安全機制瞭解比較少,還有使用者缺少Redis相關的營運經驗,同時由於Redis也沒有提供更豐富的安全防護機制。Tair (Redis OSS-compatible)提供了更安全的服務,對於雲上的Redis服務建議使用Tair (Redis OSS-compatible)。
Tair (Redis OSS-compatible)安全規範
內網訪問,避免公網訪問
Tair (Redis OSS-compatible)提供可信任的內網訪問,不申請外網串連地址則無法直接從外網訪問Tair執行個體。
物理網路隔離
Tair (Redis OSS-compatible)物理機網路和使用者網路物理隔離,使用者虛擬機器無法直接存取後端物理機網路。
VPC網路隔離
對於阿里雲使用者如果使用專有雲VPC網路,則能夠保證只有同一個VPC網路下的服務可以互相訪問。
白名單
Tair (Redis OSS-compatible)支援白名單設定,使用者可以在控制台設定可以訪問的IP白名單。
密碼訪問
Tair (Redis OSS-compatible)對於傳統網路的執行個體強制開啟密碼鑒權,使用者可以通過設定複雜的密碼避免密碼被攻破。
存取權限隔離
Tair (Redis OSS-compatible)後端每個執行個體進行許可權和訪問目錄的隔離,每個執行個體都只能訪問自己執行個體的路徑,避免執行個體之間的互相影響。
禁用危險命令
Tair (Redis OSS-compatible)禁用了一些危險的系統管理命令config,save等,使用者如果需要進行參數修改需要通過控制台二次驗證之後才能修改,同時也避免了直接操作後端的設定檔及管理命令。
安全監控
Tair (Redis OSS-compatible)具有完善的物理機安全監控,定期掃描和更新安全監控策略,提早發現安全風險。
Redis叢集密碼
原生Redis 3.0的cluster版本不支援密碼驗證,Tair (Redis OSS-compatible)叢集版本支援密碼驗證,提高了安全性。