如何在 Android 和 iOS 上进行证书链验证?

How to do certificate chain validation on Android and iOS?

我们应用的安全测试遇到了与证书链验证相关的安全问题。这是 CWE-296 https://cwe.mitre.org/data/definitions/296.html

据我所知,添加证书固定可以解决这个问题,但我不确定是否有办法在不固定的情况下进行证书链验证。

OWASP-MASVS 也提到了 CWE-296 here under references

有人可以提供更多这方面的知识吗?可能会分享一些执行此操作的示例应用程序。

我们正在使用 Okhttp 进行联网!

根据与 OWASP MSTG 团队的 Jeroen Beckers 和 Sven Schleier 的讨论,我了解到网络库(在我们的例子中是 Okhttp)应该默认处理 certificate chain validation。除非该应用有特定的 custom implementation of TrustManager 信任所有证书。

斯文提到,

once all the certificate checks are in place (chain validation, expiry of the certificate etc.), SSL Pinning can be implemented. So validation of the chain of trust for certificates always need to be there, SSL Pinning is then just another layer to make Man-in-the-middle attacks harder.

我们的问题可能被渗透测试人员误报。

Link of the discussion 在 OWASP Slack 频道