这些 PDF 对象在所有使用 Acroforms 或 XFA 表单的文档中是不是正常?

Posted

技术标签:

【中文标题】这些 PDF 对象在所有使用 Acroforms 或 XFA 表单的文档中是不是正常?【英文标题】:Are these PDF object's presence normal in all documents which use Acroforms or XFA forms?这些 PDF 对象在所有使用 Acroforms 或 XFA 表单的文档中是否正常? 【发布时间】:2015-03-08 14:31:27 【问题描述】:
2 0 obj
<</XFA 1 0 R >>
endobj

3 0 obj
<<
  /Extensions
  <<
     /ADBE
     <<
        /ExtensionLevel 3
        /BaseVersion /1.7
     >>
   >>
   /AcroForm 2 0 R
   /Type /Catalog
   /Pages 4 0 R
   /NeedsRendering true
>>
endobj

实际上,我正在分析带有 CVE-2013-2729 的 PDF,其中特制的 RLE8 编码位图图像通过 Adob​​e Reader 的 XFA 组件导致整数溢出。

另外,PDF中的直接对象和间接对象有什么区别?我总是对这两者感到困惑。

【问题讨论】:

您提到了安全性、RE 和漏洞利用,但它似乎与 问题 无关,是吗? 我已经提到了这些,因为它是一个漏洞,我正在尝试重新利用具有这些对象的漏洞。所以基本上,我不知道的是,如果对象编号 3 是正常的还是具有恶意属性.据我说:这些都是正常的,但我还是想确认一下。 :-) 这个漏洞的罪魁祸首是位图图像,它存在于对象编号 1 的流中,被编码两次 (\Flatedecode)。所以,我想知道的是,有什么可疑的关于这两个对象 注意:我是 RE/VA 的菜鸟 :-) 我想知道的是,这两个对象有什么可疑之处 - 不,它们看起来完全正常,对于纯 XFA 格式的 PDF 来说已经足够了。 【参考方案1】:

首先,这些对象看起来完全是无辜的。

其次,直接对象和间接对象之间的区别正是您所期望的。如果你看这条线:

<</XFA 1 0 R >>

这就是间接宾语的使用。该对象在其他地方定义,在本词典中它被称为(间接)。

如果你看线

/ExtensionLevel 3

这是直接对象的使用。该对象是在没有间接的情况下就地定义的。

【讨论】:

以上是关于这些 PDF 对象在所有使用 Acroforms 或 XFA 表单的文档中是不是正常?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 acroforms 中获取字体信息?

使用DevExpress Reports和PDF Viewer创建AcroForm Designer

使用 iText 进行 Acroform 编辑的 Pdf

如何在Django中将pdf作为电子邮件附件发送

PDF语法-总体

Ghostscript Pdf Transparant Objects删除