防止SSL降级攻击
细节
使用这种形式的中间人攻击,攻击者可以通过透明地劫持网络上的HTTP流量,监控HTTPS请求,然后消除SSL / TLS来绕过SSL / TLS提供的保护,从而在客户端和服务器之间创建不安全的连接。这种攻击在移动网页应用程序上尤其难以防止(移动网络应用程序本质上是一个看起来像应用程序的网页)。
修复
通过TLS传输所有流量,甚至非敏感流量。这可以防止任何可能的降级/剥离攻击,因为攻击者需要一个初始明文“入口点”来完成所述攻击。
验证SSL / TLS是否活动。在原生应用程序中验证SSL / TLS相对简单。移动网络应用程序可以通过JavaScript验证SSL / TLS,如果未检测到HTTPS连接,则将客户端重定向到HTTPS。更可靠的要求使用SSL / TLS的手段是HTTP严格传输安全(HSTS)头。HSTS头部强制与该域的所有后续连接使用TLS和原始证书。浏览器才开始实现对HSTS的支持,移动浏览器支持较为滞后。
当涉及连接不依赖于已验证的HTTPS会话时,请避免使用图标或语言标记。用户教育是减少SSL / TLS降级攻击风险的重要组成部分。在应用程序中使用弹框和文本来强化用户使用HTTPS保护网络流量的重要性。Android和iOS中最近推出的另一个缓解措施是将非TLS /明文流量视为开发者错误。Android最近添加了android:usesCleartextTraffic,iOS-9及以上版本要求您手动添加明文流量的例外。替换Web协议HTTP / 2是另一个即将到来的缓解措施,因为它只使用TLS(以及其他特性)。
参考
- Moxie Marlinspike’s sslstrip exploitation tool - https://moxie.org/software/sslstrip/
- OWASP Mobile Top 10: M3- Insufficient Transport Layer Protection
- CWE: CWE-757: Selection of Less-Secure Algorithm During Negotiation ('Algorithm Downgrade')