/ tls漏洞

TLS ROBOT Attack漏洞

ROBOT Attack是什么

这是一个在1998年就发现的漏洞,该漏洞允许使用服务端的私钥执行RSA解密和签名操作。
在1998年,Daniel Bleichenbacher发现了一个SSL服务器在的PKCS#1 v1.5中的填充允许自适应的密文选择攻击。但该错误与RSA加密一起使用时,能彻底打破TLS的安全性。

对于易受到攻击的主机,只支持RSA加密密钥交换,攻击者就可以很容易的被动的记录流量并解密,而对于通常使用前向保密但仍然支持易受攻击的RSA加密密钥交换的主机而言,风险取决于攻击者的攻击速度。

ROBOT攻击的原理

自适应选择密文攻击

在自适应选择密文攻击的情况下,攻击者的目标是解密密文而不是解密密钥。攻击者使用原始密文,迭代生成新的密文,该新的密文与原密文相关,他讲密文发送给接受者-oracle-观察响应,响应会泄露关于解密信息有效性的特定信息。攻击者在每次的回应时都会得到一些明文信息,只要重复这些步骤,直到完成解密。攻击流程图如下:
attacker-model-practice2
该攻击是基于RSA PKCS #1的填充。

RSA PKCS #1 v1.5

RSA PKCS #1 v1.5(下文中简称为PKCS #1)填充用于需要RSA加密的信息,为了加密K,消息首先被0x00、一些随机字节和0x00 0x02填充,随机字节的选择方式是为了让填充的信息达到特定的块长度(1024、2048或4096位),可以参考下图,填充16字节长消息以实现256字节:
pkcs1padding
消息解密器,它解密消息,检查消息结构,在0x02之后搜索第一个0x00字节,并且打开加密信息。使用TLS握手协议来建立TLS会话时,会有一个会话密钥,该密钥是使用多个公共值和PermasterSecret建立的。PremasterSecret是由客户端生成的一个48字节长的值,并通过PKCS #1编码的ClientKeyExchange发送的服务器:
pkcs1PMS
PermasterSecrt由两个字节的版本协议(上图中的0x03 0x01)和46个随机字节组成。如果攻击者拥有这46个随机字节,攻击者就能解密TLS会话。

预防ROBOT

如果你的服务器受该漏洞影响,可以进行如下操作:

  1. 禁用以TLS_RSA开头加密套件,DHECDH系列的加密套件不受该漏洞影响。
  2. 更新服务器软件,使用非PKCS #1 v1.5填充的服务器实现。
  3. 降低SSL客户端握手超时,使用这种方法能有效降低风险,但不能完美的解决、还存在一定副作用。

检测方式

https://myssl.com/robot_detect.html

我的证书私钥是否泄漏,需要吊销吗?

该漏洞不会影响服务器的私钥, 因此可以不用考虑证书更换问题。

一些官方修复方案:

设备 修复方案
F5 BIG-IP SSL vulnerability
Citrix TLS Padding Oracle Vulnerability in Citrix NetScaler Application Delivery Controller (ADC) and NetScaler Gateway
Radware Security Advisory: Adaptive chosen-ciphertext attack vulnerability
Cisco ACE Bleichenbacher Attack on TLS Affecting Cisco Products, End-of-Sale and End-of-Life
Cisco ASA Bleichenbacher Attack on TLS Affecting Cisco Products
Bouncy Castle Fix in 1.59 beta 9, Patch / Commit
Erlang OTP 18.3.4.7, OTP 19.3.6.4, OTP 20.1.7
WolfSSL Github PR / patch
MatrixSSL Changes in 3.8.3
Java / JSSE Oracle Critical Patch Update Advisory - October 2012