如何攻破PDF加密

为了确保机密性,PDF文件是加密的。通过加密可以在没有其他保护机制的情况下,实现敏感文件的安全传输和存储。

发送者和接收者之间的**管理是基于口令或公钥的。如果是基于口令的,那么接收者必须知道发送者所使用的口令,或者口令必须通过安全通道来进行传输。如果是基于公钥的,那么发送者必须知道接收者的X.509证书。

如何攻破PDF加密

 

安全问题

研究人员分析发现的pdf安全问题包括:

在没有对应口令的情况下,攻击者可以处理加密的pdf文件。PDF规范说明中允许明文和密文混合使用。在与其他允许通过HTTP加载外部资源的pdf特征结合后,攻击者可以在受害者打开pdf文件的时候就发起直接的窃取攻击。

PDF加密使用的没有完整性检查的CBC加密模式,这也表明了密文的可修改性。研究人员利用CBC malleability gadgets创建了自窃取的密文部分。研究人员利用该技术不仅可以修改现有的明文,重庆还可以构建完整的新的加密对象。

攻击场景

研究人员开发了针对pdf加密的2种攻击:Direct Exfiltration 和 CBC Gadgets

攻击场景1: Direct Exfiltration (Attack A)

如何攻破PDF加密

 

该攻击的基本思想是通过滥用部分加密特征来修改加密pdf文件的内容。一旦受害者打开文件,敏感内容就会被发送给攻击者。因为加密的pdf文件没有完整性保护,因此攻击者可以修改加密pdf的结构,增加未加密的对象,或将加密的部分封装到攻击者控制的环境中。

在攻击示例中,攻击者滥用了pdf加密标准的灵活性来将特定对象定义为非加密的。攻击者可以以修改加密词典(Encrypt dictionary)的方式使文档是部分加密的。这样攻击者就可以*地修改文档中的字符串,并添加含有未加密的字符串的其他对象。

该攻击有3个必要条件,分别是:

部分加密。基于Crypt Filters的部分加密的文件。

交叉对象引用。必须要能在引用或访问pdf文件的攻击者控制的非加密部分的加密字符串或流对象窃取信道。必须存在pdf阅读器通过互联网通信的交互性特征。包括pdf forms,奇热超链接和JavaScript。

注:攻击并没有滥用任何加密的漏洞,因此无需了解底层的加密算法或加密模式。

如何攻破PDF加密

 

forms表单

如何攻破PDF加密

 

超链接

如何攻破PDF加密

 

JavaScript

攻击场景2: CBC Gadgets (Attack B)

并非所有的PDF阅读器都支持部分加密文件,因此direct exfiltration并非全部适用。但因为pdf加密中没有定义经过认证的加密,因此攻击者可以利用CBC gadgets来窃取密文。基本思想是直接在加密的对象中通过在URL中加前缀的方式来修改明文数据。因此,CBC gadgets攻击并不需要交叉对象引用。

所有的基于gadget的攻击都修改现有的加密内容或从CBC gadgets中创建新的内容。由于CBC加密模式的malleability特征,这是可行的。

攻击有两个必要条件:

已知明文。为了使用CBC gadgets操作修改加密的对象,必须知道明文部分。对AESv3加密算法中,明文文本在Perms记录中。在老版本的加密算法中,必须要知道要窃取的对象中的已知明文。

窃取信道:必须要有交互式的特征,包括PDF表单或超链接。

如何攻破PDF加密

form表单

如何攻破PDF加密

 

超链接

结果分析

研究人员用以上两种攻击方式对27个常用的pdf阅读器进行了测试,包括Adobe Acrobat, Foxit Reader, Evince, Okular, Chrome, Firefox等。

评估结果如下:

 

·  – 表示无需用户交互

如何攻破PDF加密

 

如何攻破PDF加密

·  – 表示需要用户交互

如何攻破PDF加密

·  – 表示不受该攻击的影响

 

如何攻破PDF加密

 

 

如何攻破PDF加密

更多技术细节参见:https://www.pdf-insecurity.org/encryption/encryption.html

学术文章Practical Decryption exFiltration: Breaking PDF Encryption 已被CCS 2019录用,将在11月进行举行的CCS 2019进行oral presentation。论文下载地址:https://www.pdf-insecurity.org/download/paper-pdf_encryption-ccs2019.pdf