tls11漏洞
TLS 1.1正式退休了。2021年3月,互联网工程任务组(IETF)在RFC 8996里宣布,TLS 1.0和1.1不再推荐使用。浏览器厂商早就动手了——Chrome从84版本开始就把TLS 1.1的连接降级为“不安全”,Firefox和Safari跟进得更早。但真正让我意识到问题严重性的,是一次客户审计。
那是个金融类项目,客户的安全团队扫描完直接甩过来一份报告,里面赫然写着“检测到TLS 1.1协议支持,存在CVE-2011-3389风险”。我盯着屏幕愣了几秒——这漏洞2011年就爆出来了,十年后还在企业系统里活蹦乱跳。BEAST攻击,利用CBC模式加密的弱点,能在特定条件下解密部分会话数据。修复方案早就有了,升级到TLS 1.2或者禁用CBC套件就行。但现实是,一堆老系统像化石一样嵌在基础设施里,动都不敢动。
TLS 1.1的毛病不只是BEAST。它不支持AEAD加密套件,没有扩展主密钥(Extended Master Secret),对SSL/TLS重协商攻击的防护也弱。更麻烦的是,它和TLS 1.0共用一套密码套件体系,很多配置里根本分不清。有一次我排查一个连接失败问题,抓包看了半天,发现服务端还在响应TLS 1.1的ClientHello——运维说“我们早就禁了1.0”,但没检查1.1。这种疏漏太常见了。
真正让我觉得TLS 1.1该彻底死掉的,是2018年那个ROBOT攻击。它利用的是RSA密钥交换的填充校验漏洞,可以远程还原私钥。TLS 1.1默认支持RSA密钥交换,而TLS 1.2已经允许完全摒弃RSA,改用ECDHE。但老系统改起来牵一发动全身,银行ATM、工业控制设备、甚至某些医疗仪器,还在跑TLS 1.1。有个客户跟我说,他们一台实验室设备用了十二年,厂商倒闭了,固件不支持TLS 1.2,只能靠内部网络隔离硬扛。这种场景你说怎么办?
我个人的态度很明确:TLS 1.1不是“过时”,是“危险”。它就像一把锁芯磨损严重的挂锁,看着还在用,实际上用根铁丝就能捅开。别等安全扫描报告来打脸,主动关掉它。怎么关?Nginx里直接ssl_protocols TLSv1.2 TLSv1.3;,Apache就SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1。麻烦的永远是兼容性测试——老客户端连不上怎么办?那就让它们连不上吧。现在2024年了,连Windows XP的POS机都退役了,还在跑TLS 1.1的客户端,本身就该进博物馆。
不过话说回来,光改配置不够。很多系统禁用了TLS 1.1,但密码套件列表里还留着CBC族,等于关了门但没上栓。顺手把ECDHE-RSA-AES128-GCM-SHA256这类现代套件设为首选,老套件全删。还有个细节——TLS 1.1的会话恢复机制也弱,没有session ticket的完美前向保密。你升级到1.2之后,记得把session ticket的密钥轮换周期调短,别默认一周才换一次。
最后说个真实教训。去年帮一个电商平台做渗透测试,他们声称“全面支持TLS 1.2”,但我在测试时故意把客户端协议版本压到TLS 1.1,服务器居然正常握手了。查了下配置,原来是负载均衡器上有个全局设置覆盖了后端的TLS策略。这种隐蔽开关到处都是。所以别信文档,自己拿openssl扫一遍:openssl s_client -connect target:443 -tls1_1。如果返回握手成功,那你的系统还在裸奔。修完再扫一次,彻底干净了才安心。
(责任编辑:休闲)














