
EagleEyes Lite Androidアプリケーションにおける不適切な証明書チェーン検証
EagleEyes Lite (バージョン 2.0.0) は、HTTPS通信中にSSL/TLSサーバー証明書を適切に検証できません。
アプリケーションは、push.lite.avtech.com.MySSLSocketFactoryNew.checkServerTrusted() 内でカスタム X509TrustManager を実装しており、証明書の有効期限のみをチェックし、完全な証明書チェーン検証を省略しています。
その結果、攻撃者はこの脆弱性を悪用して、自己署名証明書または不正な証明書を使用したMITM攻撃を実行し、機密性の高い監視データの傍受や操作が可能になります。
カスタム X509TrustManager を通じて、アプリケーションは証明書の有効期限のみを検証し、証明書チェーンが適切に信頼されているかどうかを検証しません。
@Override // javax.net.ssl.X509TrustManager
public void checkServerTrusted(X509Certificate[] x509CertificateArr, String str) throws CertificateException {
try {
x509CertificateArr[0].checkValidity();
} catch (Exception unused) {
throw new CertificateException("Certificate not valid or trusted.");
}
}
カスタム X509TrustManager を通じて、アプリケーションは証明書の有効期限のみを検証し、証明書チェーンが適切に信頼されているかどうかを検証しません。
これにより、MITM攻撃者は、アプリケーションとそのバックエンドサーバー間の機密通信を容易に傍受または変更できます。
アプリケーションは、カスタム X509TrustManager を、完全な証明書チェーンを検証するデフォルトのシステム実装に置き換えるべきです。適切なホスト名検証を強制し、不一致または信頼できない証明書を受け入れないようにする必要があります。
レガシーなAndroidバージョン向けの安全でないフォールバックロジックは削除するか、同等のセキュリティチェックで更新して、一貫したTLS検証を確保する必要があります。