我想知道iText是否正在研究或已经修补了此处描述的影子攻击:https://www.pdf-insecurity.org/影子攻击:隐藏和替换签名PDF中的内容(2020年7月(我刚刚发现了关于2019年发现的漏洞的信息https://itextpdf.com/en/blog/technical-notes/avoiding-pdf-digital-signature-vulnerabilities-itext
首先,iText不需要修补,无论是在7.x版本中还是在5.5.x版本中。
在任何一种情况下,分别通过增量更新SignatureUtil.signatureCoversWholeDocument
和AcroFields.signatureCoversWholeDocument
检查是否对签名的PDF进行了任何更改的方法,在PDF不安全站点上提供的操纵示例的情况下报告false
,即报告在签名后添加了某种更改。
此外,在任何一种情况下,检索签名修订的方法(分别为SignatureUtil.extractRevision
和AcroFields.extractRevision
(也会为这些示例返回原始的、尚未操作的签名修订。
这种行为并不奇怪。影子攻击的描述清楚地表明,这些攻击是通过增量更新(在RUB研究人员的漏洞报告中称为递增保存(应用于PDF的。signatureCoversWholeDocument
方法现在精确地检查文件在签署的修订之后是否没有内容;因此,它检测由影子攻击添加的增量更新。extractRevision
方法将文件返回到相应的带符号范围的末尾;因此,它不会从影子攻击应用的增量更新中返回任何添加。
为了确保我检查了iText 7signatureCoversWholeDocument
输出中被操纵的示例文档,请参阅本次ShadowAttacks单元测试,不出所料,该方法报告了有问题的签名没有覆盖整个文档。
可以读取漏洞报告,将类似iText的行为称为";有限的脆弱性";称为
如果允许的修改(如注释(以及不允许的
(漏洞报告-绕过PDF中签名验证的攻击-2020-03-02(
在我看来,只有当有问题的软件另有承诺时,这个术语才有意义,即区分允许和不允许的更改,并相应地报告。否则,它不是漏洞,而是(希望有记录(行为。易受攻击只是错误地期望不同行为的用户。
据我所知,iText并没有承诺分析增量更新中的变化(除了检索LTV信息(。Bruno Lowagie在其关于PDF数字签名的iText白皮书中写道,已经在开发路线图上进行了分析;然而,据我所知,目前还没有(公开的(实施。
因此,我不会特别将iText的行为称为";有限的脆弱性";。
当然,如果某些软件是基于的基于iText进行签名验证,并且确实承诺根据上面解释的iText的验证结果识别允许和不允许的更改,则该软件确实至少具有有限的影子攻击漏洞,除非将其报告为不允许的修改。
很可能,至少被报告为易受攻击的广泛使用的验证器,最重要的是Adobe Acrobat Reader,会迅速尝试更正其代码,至少表明存在更改,甚至报告为不允许更改。尽管如此,尝试并实施一些方法来检查影子攻击的准备迹象可能是有意义的。我目前正在研究这方面的一些概念证明。