不安全的 HostnameVerifier

OWASP 類別:MASVS-CODE:程式碼品質

總覽

HostnameVerifier 實作會負責驗證伺服器憑證中的主機名稱,是否與用戶端嘗試連線的伺服器主機名稱相符。

Android 應用程式中的不安全 HostnameVerifier 實作是指,該實作無法正確驗證與應用程式通訊的伺服器主機名稱。這可能會讓攻擊者冒用合法伺服器,誘騙應用程式傳送機密資料給攻擊者。

會有這個安全漏洞,是因為 HostnameVerifier 類別具有可略過 X.509 憑證主機名稱驗證程序的函式呼叫,而只會驗證憑證的雜湊值。常見的誤解是,SSLSession#isValid 函式會執行安全性相關作業,實際上,這項作業只會檢查工作階段是否有效且可供繼續使用或加入;這兩者都不會驗證工作階段的「安全性」HostnameVerifier 類別已由 NetworkSecurityConfig 取代。

影響

不安全的 HostnameVerifier 實作可能會產生安全漏洞,可用於針對受害者應用程式的網路流量執行 MiTM (中間人) 攻擊。如果濫用這個不安全的程式碼,遠端或本機網路攻擊者會在觸發此程式碼時,入侵使用者的應用程式網路資料。影響程度取決於不小心曝露的網路流量內容 (PII、私人資訊、敏感工作階段值、服務憑證等)。

因應措施

使用 NetworkSecurityConfig.xml 功能,確保所有實際工作環境、測試、偵錯和開發階段連線都能正確處理,而不要使用或實作自訂傳輸層安全標準 (TLS)/安全資料傳輸層 (SSL) 憑證驗證程式碼。

資源