不安全的 X.509 TrustManager

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

總覽

X509TrustManager 類別的職責是驗證遠端伺服器的真實性。要做到這一點,方法是驗證伺服器憑證。

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

之所以會有安全漏洞,是因為一旦使用 X509TrustManager 類別,Java 和 Android 就會允許完整覆寫伺服器驗證作業。X509TrustManager 類別有兩個利益關係函式:checkServerTrusted()getAcceptedIssuers()。這些函式呼叫可設為信任所有 X.509 憑證。但自訂驗證邏輯可能容易發生問題或不完整,且會允許非預期的連線。在上述這些情況下,使用該類別就不再有意義,而透過 X509TrustManager 輸出內容建立的會是不安全的網路連線。

影響

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

因應措施

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

資源