|
2016年,协议信息泄露安全研究员Tatu Ylönen发现了一个潜伏在OpenSSL心脏里的漏洞裂缝。这个漏洞编号CVE-2016-2183,协议信息泄露有个更直白的漏洞名字——DES/3DES Birthday attack。简单说,协议信息泄露攻击者能通过暴力碰撞,漏洞在特定条件下还原出SSL/TLS会话的协议信息泄露明文内容。听起来像老式密码学教材里的漏洞理论攻击?可它偏偏活在真实世界里,直到今天,协议信息泄露仍有大量服务器带着这个隐患在跑。漏洞 问题出在3DES算法上。协议信息泄露它的漏洞有效安全强度只有112位,远低于人们以为的协议信息泄露168位。更致命的漏洞是,当数据量超过32GB时,协议信息泄露碰撞概率会急剧上升。32GB在今天的流量环境下算什么?一台普通视频服务器几分钟就能跑完。攻击者只要持续监听一个加密通道,收集足够密文,就能利用生日悖论,以2^32级别的计算量找到密钥片段。 我见过不少运维人员对这个漏洞不以为然。他们的理由很直接:“我们早就不用3DES了。”这话对了一半。OpenSSL默认配置里,3DES确实不在首选,但很多老系统、嵌入式设备、银行终端,仍然把3DES作为兼容性兜底。更隐蔽的是,TLS 1.0和1.1协议本身也受影响,而这两个老协议在Windows Server 2012、某些网络打印机、工业控制设备里,还活得好好的。 一个真实案例。2019年,我对某省级医院的内网系统做安全评估。他们的PACS影像传输服务用的是TLS 1.0,加密套件里赫然列着DES-CBC3-SHA。当时我试着用openssl s_client去握手,服务器秒回支持3DES。理论上,只要有人在内网抓包超过数小时,就可能解出部分患者影像数据的传输内容。医院信息科的人听完很震惊——他们以为等保测评过了就万事大吉。 修复方案其实不复杂。最直接的是在OpenSSL配置里禁用所有含3DES的套件,同时强制TLS 1.2以上。但麻烦的是兼容性。我见过不少老式HIS系统,一旦禁了3DES,客户端直接报“no shared cipher”。这种情况下,就得用代理层做协议转换,或者干脆升级客户端库。没有一劳永逸的银弹,只有权衡取舍。 有意思的是,这个漏洞在2016年就被披露,但直到2020年,Shodan扫描仍能发现超过200万个暴露的HTTPS端口支持3DES。很多是路由器、摄像头、NAS这类物联网设备,厂商早已停止维护。普通用户不会去改配置,更不会去更新固件。漏洞就这么晾在那里,像一把没上锁的备用钥匙,挂在门框上。 别指望靠单一技术手段解决一切。CVE-2016-2183提醒我们,密码学算法有寿命,协议有寿命,设备也有寿命。真正的防线不是某个补丁,而是持续的清点、测试和淘汰机制。今天你禁了3DES,明天可能还有RC4残留。安全是动态的对抗,不是一次性的整改。 |