近日,德国研究机构Ruhr University Bochum发布安全报告,提出了三种针对PDF签名的攻击方法,中国金融认证中心(CFCA)的PDF技术人员关注到该信息后,及时地进行了技术分析,并给出了一些应用建议。
第一种通用签名伪造(USF),可以简述为“删掉或破坏PDF中的数字签名值”。把该方式算作一种攻击方式其实有些牵强,我们看到绝大部分厂商不受这种攻击的影响,但恰恰Adobe Reader却在这里犯了个代码逻辑错误,估计这也是研究人员把该方式算作一种攻击的原因吧,毕竟Adobe Reader的用户量大,好在Adobe在几个月前就已经收到并修复了该漏洞。
第二种增量保存攻击(ISA),可以简述为“PDF的追加式修改”。
PDF规范要求,PDF文档做完第一个签名后,再进行其它修改或第二个签名时,新的数据必须追加到文档的末尾,被签名保护的数据不能再有任何改动,否则前一个签名就验证不过了。如果使用该方式窜改合同产生法律纠纷,攻击者根本无法使用窜改的合同作为证据,因为这种追加式修改,使用专业的PDF格式分析软件就能够发现追加的数据,把上图红色部分删除,就可以得到已被签名保护的内容。
第三种攻击方式,可以认为是该份报告中提出的一种较为有价值的漏洞,属于对PDF规范脆弱点的利用。
该攻击有两个核心要点:
一是在相同的偏移位置处伪造一个xref交叉引用表(该表在PDF文档中处于重要地位,xref表中记录了PDF中其它对象的地址,PDF阅读器根据xref表的信息去解析渲染文档),从而诱使PDF阅读器去解析使用伪造的数据。
二是把真实的被签名数据转移到其它位置,同时更改ByteRange数组里的值(这些值记录了被签名数据的位置及范围)指向转移后的位置,这样PDF阅读器在验证数字签名时,就会到转移后的位置读取原始被签名数据用于验签,因为这些数据并未被修改过,所以验签还是通过的,从而骗过了阅读器。
这种攻击自身的弱点也比较明显,它需要往文档里嵌入一些不合理数据,根据报告中提供的解决方案,就可以发现并清除恶意数据。
因为原始被数字签名保护的数据都还在文档中,与第二种方式类似,产生纠纷也很容易还原出原始文档。
我们建议使用桌面版PDF阅读器进行合同验证的用户,对于重要合同,可以多选几种桌面阅读器,以降低再有类似未被发现的软件或协议漏洞被人利用的可能。
合同票据签署时,最好选择在线闭环PDF签署系统或平台。闭环系统对系统内的PDF签名时,一般都是后台系统自动合成PDF业务数据,签名过程中的文档也是在系统内在线流转,没有人为随意修改的机会。如果实施攻击,需要先攻破企业防火墙,再攻破存储数据的服务器系统,才能拿到修改PDF的权限,基本上避免了这种攻击的可能。
建议增强业务系统层面的纵深防护。报告里提到的攻击,是针对PDF文档格式的脆弱点攻击,假如攻击得逞,影响的是该环节的业务结果,并不像某些计算机程序漏洞一样,一旦被攻击,立即产生破坏效应(例如敏感数据泄露)。在业务系统内,作好对关键数据的多环节校验审核,就可以有效防范此类攻击。
最后提醒大家,经过数字证书签名后,被签名数据的真实性仍然是无法伪造的,数字签名仍然是目前安全可靠的技术手段。
责任编辑:韩希宇
免责声明:
中国电子银行网发布的专栏、投稿以及征文相关文章,其文字、图片、视频均来源于作者投稿或转载自相关作品方;如涉及未经许可使用作品的问题,请您优先联系我们(联系邮箱:cebnet@cfca.com.cn,电话:400-880-9888),我们会第一时间核实,谢谢配合。