OpenDocument
和 Open XML
都是 Office
打开文件的一种新格式。OpenDocument
是 ISO
标准,由 OpenOffice.org
和 Sun StarOffice
推广。Open XML
是 Microsoft Office 2007
文档的新格式,即 ECMA
标准。这两种格式具有相同的基本原则:ZIP
存档中的 XML
文件,具有开放模式,与旧的专有格式(MS Word
,Excel
,PowerPoint
,…)形成对比。 但是,它们都存在许多安全问题,类似于以前的 Office
格式:由于宏,脚本,OLE
对象和类似功能,恶意人员仍然可以嵌入和隐藏恶意软件(特洛伊木马和病毒)。本文介绍了技术细节的安全问题,包括可用于绕过反病毒的 XML
和 ZIP
混淆技术,并描述了如何设计过滤器以安全地去除不需要的部分。Office
文件格式一直存在安全问题,主要是因为它们具有丰富的“活动”功能,如宏或 OLE
对象 [SSTIC03]
,或者因为文档隐藏信息泄漏 [OSSIR03]
。最近,安全研究人员更加关注这些格式和相关应用程序,以发现许多实现漏洞 [CVEMSO,CVEOOo]
。OpenOffice
或 MS Office 2007
比以前的办公套件更安全。Eric Filiol
在 SSTIC06 [ESAT1,ESAT2,ESAT3]
中所宣布的那样。例如,在 2006
年 6
月,第一个名为 Stardust
的 “概念验证” 病毒表明该威胁对 OpenOffice
是真实存在的。此外,在 OpenOffice 2.0.2
中发现了三个漏洞,允许恶意代码绕过默认安全策略(绕过宏和 Java
沙箱的警告弹出窗口)。Open XML
是一种基于开放标准的新格式,其规范刚刚由 ECMA
和 Microsoft
于 2006
年发布,尚未发布真正的完整安全性分析。本文重点介绍这些新格式及其相关办公套件带来的一些安全问题,然后提出一些解决方案来保护我们的系统免受威胁。它还表明,ZIP
和 XML
为恶意代码带来了额外的混淆可能性,并强调了绕过防病毒和内容过滤器的警告。www.springerlink.com
上获取:www.springerlink.com:http://dx.doi.org/10.1007/s11416-007-0060-2这些是用于此分析的产品和版本:
OpenDocument
规范 v1.0 [ODSPEC10]
。新版本1.1 [ODSPEC11]
尚未分析。
OpenOffice v2.2.0
开放的 XML ECMA-376
规范,2006
年12
月发布的最终版本:[OXSPEC]
。
Microsoft Office 2007
版本 12.0.4518.1014
。
所有测试均在 Windows XP SP2
上执行。
这不是一个完整的安全性分析,一些功能,如加密和数字签名尚未经过彻底测试。此分析侧重于与文件格式和应用程序的功能相关联的安全问题。目标不是找到缓冲区溢出等漏洞。这篇文章的研究工作始于法国的 DGA / CELAR
。这项工作的早期版本于 2006
年 11
月的 PEPEC
安全会议上发布[PACSEC06]
,然后在 2007
年 6
月的 SSTIC
安全会议上以法语发布 [SSTIC07]
。在本文档中,OpenOffice.org
可能被称为 "OpenOffice"
或 "OOo"
,以及 Microsoft Office "MS Office"
或简称为 "Office"
。
OpenDocument v1
是 OpenOffice v2
使用的开放格式。它也被其他办公应用程序使用,如 Sun StarOffice
,Koffice
或 Abiword
。自 2006
年 5
月以来,OpenDocument
已成为 ISO
标准。Office 2007
是 2006
年 12
月首次发布的 Microsoft Office
的新版本。产品中有许多变化,例如用户界面和文件格式。Open XML
是 MS Office
主应用程序的新默认格式:Word
,Excel
和 PowerPoint
。它是自 2006
年底以来的 ECMA
标准,并且逐渐成为 ISO
标准。OpenDocument 和 Open XML 共享类似的特性:
ZIP
存档中的 XML
文件组成。[ODSPEC10,ODSPEC11,OXSPEC]
。OpenDocument
的 ISO
,Open XM
L 的 ECMA
。通过更密切地研究已发布的规范,可以突出一些差异:
Open XML
结构比 OpenDocument
更复杂,功能更丰富。微软的目标是处理其 Office
套件的所有现有功能;而 OpenDocument
更像是一种文档模型。OpenDocument
规范仅 700
页长,而 Open XML
达到了 6045
页!Open XML
规范中有许多有趣的功能还未涉及安全,如 VBA
宏,OLE
对象或加密。根据 [ECMA]
第 15
页,Microsoft
和 ECMA
将这些功能视为超出 Open XML
标准范围的专有技术。因此,MS Office
生成的 Open XML
文件格式未完全公开,标准应仅被视为文件格式的子集。在实践中,防病毒和内容分析过滤器必须处理整个格式,包括这些未指定的专有功能。OpenDocument
规范尚未完成,因为这仍然是一项正在进行的工作,而不是为了保护技术不被泄漏。可以在其他文档中找到有关安全功能的更多信息,并且可以获得 OpenOffice.org
的完整源代码。OpenDocument
和 Open XML
的安全性分析由于其开放状态而更加容易。然而,他们的规格的复杂性和缺乏一些细节并没有使过于简单。Office
文档的最常见威胁并未涉及到宏或 OLE
对象,而是基于办公套件 [CVEMSO,CVEOOo]
中的漏洞。由于 OpenDocument
和 Open XML
由结构化且定义良好的 XML
而不是二进制数据组成,因此可以假设与格式解码相关联的漏洞的可能性要小得多。此外,如果办公室应用程序使用严格的 XML
模式来验证数据,则格式错误的文档不应该能够触发潜在的漏洞。但是,OpenDocument
和 Open XML
不仅包含 XML
:二进制部分(如位图图片和 OLE
对象)仍然存在 Office
套件还依赖外部库来处理某些类型的数据,这些库可能很容易受到攻击。 另一个问题是,由于其开放的规范,将创建许多第三方应用程序来处理这些格式。由于格式不是那么简单,可以猜测在这些应用程序中也会发现漏洞。OpenDocument
规范 [ODSPEC11]
仅涵盖 OpenOffice v2
套件处理的各种文件格式的子集。仅描述了文本文档,电子表格,演示文稿和矢量绘图。 尽管其他文档类型(如数据库,HTML
模板和数学公式)共享非常相似的结构。下表显示了与 OpenOffice v1
和 v2
使用的大多数本机格式关联的扩展。OpenDocument
规范中描述的格式以粗体突出显示。ZIP
压缩存档中。它基本上由几个 XML
文件组成,这些文件位于存档的根目录或子目录中。以下是常见文档中的主要 XML
文件: - content.xml:文档正文
- styles.xml:样式数据
- meta.xml:元数据(作者,标题,...)
- settings.xml:文档的 OOo 设置
- META-INF / manifest.xml:文件描述
XML
文件也可能存储在存档中: - 图片和缩略图:JPEG,PNG,SVG等
- 嵌入式图表/图纸/文档,OLE 对象
OpenOffice v2
提供了 4
种不同的语言来编写宏:Basic
,JavaScript
,Java
(Beanshell
)和 Python
。将来可能会添加更多语言。常规的 OpenOffice
安装包含这些解释器或依赖于JVM
(Java
虚拟机)之类的外部解释器。UNO
(通用网络对象)的非常强大的 API
,它可以在操作系统上运行。因此,可以编写有效的恶意软件。此外,宏可以分配给事件,并且可以在打开或读取文档时自动启动。2006
年以来,反病毒厂商已经报告了至少 3
次使用 OpenDocument
宏编写病毒的尝试:Stardust
,Starbugs
和 BadBunny
。但是,他们都没有能力在没有用户确认的情况下运行。OpenOffice
提供了 4
个安全级别,与 MS Office 2000/XP/2003
非常相似: - 低(要避免):完全没有保护。
- 中(默认):用户可以在访问文档之前启用宏(简单弹出警告)。
- 高:仅允许签名的宏或受信任的目录。 如果已接受签名授权或来自受信任位置,则不会发出警告。
- 非常高:只有受信任的位置,没有签名,没有警告
MS Office 97
中的默认级别相同。自 2000
版以来,MS Office
默认级别已更改为高,并且只有签名的宏才有权运行。2007
年 9
月安排的下一版 OpenOffice v2.3
中,默认安全级别应更改为 “高”。2006
年中期,在 OpenOffice 2.0.2
中发现了一个弱点(并且从那时起被修复),这可能允许攻击者绕过宏安全警告OpenDocument
文件中的 2
个不同子目录中: - 基本宏存储在存档的 “基本” 目录中的 XML 文件中。
- Java(Beanshell),JavaScript 和 Python 宏存储在脚本文件的 “Scripts” 目录中。
- Basic / Standard / Module1.xml
- Scripts / beanshell / Library1 / MyMacro.bsh
- Scripts / javascript / Library1 / MyMacro.js
- Scripts / python / MyMacro.py
OpenOffice v2
,可以从 Basic
,Java
和 Javascript
的应用程序创建和编辑宏。目前,Python
宏仍然需要手动操作(参见 [OSFP]
):在归档中包含文件,并编辑 manifest.xml
。ESAT
研究人员发现的主要问题之一是宏未与文档的其余部分签名。然后可以修改签名文档中的宏,并欺骗那些认为他正在打开真实文档的用户 [ESAT1,ESAT2,ESAT3]
。VBA
宏:从版本 2
开始,OpenOffice
已经能够读取 MS Office
文档中的 VBA
宏源代码。目前,无法从 OpenOffice
实际运行 VBA
宏。MS Office
文档转换为 OpenDocument
格式时,VBA
宏以明文形式存储在 OOo Basic
宏的注释中。因此,即使没有活动代码,文档也会触发与普通宏相同的警告。但是,如果将文档转换回 MS Office
格式,则会重新激活 VBA
宏。UNO
包装器从 OpenOffice
提供本机 VBA
宏支持。 2007
年,一些替代版本已经为 Excel
宏提供了有限的支持。OLE
对象。 可以在 OpenDocument
文件中存储多种类型的 OLE
对象,并至少在 Windows
上能打开它们。OLE
对象通常以 Microsoft OLE2
格式(也称为结构化存储)存储在归档根目录中名为 “Object xxx”
的二进制文件中。 因此,即使 OpenDocument
是一种开放格式,它也可以保存封闭格式的部分。OLE
对象类型是 OLE
包:它可能包含任何文件,包括可执行文件或任何命令行。 如果用户双击该对象,则弹出警告后系统将启动该文件或命令。OLE
包对象之前的警告仅来自 Windows
(packager.exe
),而不是来自 OpenOffice
。 因此,这可能是旧 Windows
系统上的一个重大安全问题。 例如,在 Windows 2000 SP4
上,根本没有警告。2006
年在 Windows XP
和 2003 [MS06-065]
中发现了一个漏洞,可以诱骗用户启动命令行。 只需在命令行的末尾添加斜杠和文件名,OLE
包对象就会显示为无害的文本文件。 这是一个例子: cmd.exe /c [...malicious commands...] /joke.txt
Javascript
或 VBscript
语言在文档中嵌入 HTML
脚本。 这些不是由 OpenOffice
直接运行的。 但是,如果文档保存为 HTML
,则它们可能由浏览器启动,并且可以触发漏洞利用。 脚本存储在 content.xml
中的
标记中,例如: <text:script script:language=”JavaScript”>
alert("test script");
</text:script>
“xlink:href”
属性引用。Java
小程序。 这与用 Java
语言编写的宏不同。 这些编译的 applet
在 OpenOffice
内部的 Java
沙箱中运行。 由于沙盒,恶意 applet
无法做有害的事情。 但是,如果存在漏洞,有时可以避开沙箱,就像 OpenOffice 2.0.2
中的情况一样。URL
链接。 当用户单击它们时,如果是外部 URL
,OpenOffice
将使用提供的地址打开浏览器。 希望似乎不可能以这种方式启动 javascript
或 vbscript URL
,因为以 “javascript:...”
和 “vbscript:...”
开头的 URL
被过滤掉了。Web
应用程序中进行了身份验证,则仍可能将用户定向到恶意网站,或启动 XSRF
攻击(跨站点请求伪造,[XSRF]
)。OpenOffice v2.1
中发现的漏洞使得在 Linux
和 Solaris
上执行本地命令成为可能,方法是在 URL [OOoURL]
中插入 shell
的转义字符。MS Office
一样,OpenDocument
文件可能会向用户隐藏敏感数据:元数据,隐藏文本,注释,修订标记等…当文档在 Internet
上发布或发送到公司网络外时,这可能会成为一个问题。OpenOffice
提供了一些有趣的功能,可在签名,导出为 PDF
或保存时警告隐藏信息。 但是,这在所有情况下都不够,因为这不包括可能隐藏在 OLE
对象中的数据。OpenDocument
文件中,并可能启动恶意代码。 即使有一些保护可以避免这种情况,但它们都不是绝对安全的。 此外,现在在 OpenOffice [CVEOOo]
中经常发现漏洞,这需要保持警惕并经常更新软件。OpenDocument
是一种开放格式,文件有时也可能包含封闭格式的部分,例如 Microsoft OLE
对象。 总之,可以说 OpenOffice
并不比 Microsoft Office
更安全或更不安全。 我们已经看到,我们可以在恶意软件或隐藏数据中发现类似的安全问题。 当然有一些差异,某些功能在一种产品中比另一种更安全。OpenDocument
格式的活动内容或隐藏数据要比通常的专有办公格式简单得多。Open XML
是主要 MS Office 2007
应用程序的新默认文件格式:Word
,Excel
和 PowerPoint
。 Open XML
文件有新的扩展: – Word: .docx, .docm, .dotx, .dotm
– Excel: .xlsx, .xlsm, .xltx, .xltm, .xlsb, .xlam
– PowerPoint: .pptx, .pptm, .ppsx, .ppsm
– Access: .accdb (new binary format, not Open XML)
Office
版本(OLE2
)中的旧二进制格式仍然可以读取和写入。 转换器包也可以免费从 MS Office 2000
,XP
和 2003
读取和写入 Open XML
文档。如果安装了转换器包,下面描述的大多数问题都与这些版本有关。Open XML
文档是一个 ZIP
压缩存档,其 XML
文件就像 OpenDocument
一样。 但是,结构稍微复杂一些。 它遵循新的 Microsoft Open Packaging Conventions
,或 OPC
(参见 [OXSPEC]
第2
部分),由其他格式共享,如 XPS [XPS]
(XPS
是一种类似于 PDF
的新 Microsoft
格式)。OPC
存档中,每个数据文件称为一个部件。 每个部分的类型在归档的根目录下的文件 “[Content_Types] .xml”
中描述。 还有 “.rels”
文件存储零件之间的间接关系。 与 OpenDocument
不同,没有直接的关系。Open XML
文档中,数据存储在多个 XML
文件中,这些文件对于每个应用程序都是不同的。 以下是 Word
文档的示例: - word/document.xml:文档正文
- word/styles.xml:样式数据
- word/settings.xml:文档的设置
- docProps/app.xml 和 core.xml:元数据(作者,标题,...)
- 图片和其他媒体:JPEG,PNG,GIF,TIFF,WMF,......
- OLE对象,VBA宏,打印机设置,......
OpenDocument
,主要的安全问题是 Open XML
文档可能包含宏,这些宏提供了足够的功能来编写有效的恶意代码。 这些是 VBA
宏,就像以前的 MS Office
格式一样。MS Office 2007
将 “正常” 与 “启用宏” 的文档区分开来。 普通文档以 “X” 结尾(例如 DOCX
,XLSX
,PPTX
),不能包含宏。 要在文档中存储宏,必须以 “宏启用” 格式保存,该格式以 “M” 结尾(例如 DOCM
,XLSM
,PPTM
)。DOCM
文件重命名为 DOCX
,则 Office 2007
将拒绝该文件为“已损坏”。Office 2007
宏安全性也发生了很大变化。Office
版本中,默认情况下,用户只能启动已签名或可信任的宏,因为默认情况下 “高安全性” 模式处于启用状态。Office 2007
中,没有更多中等或高安全级别。 新的默认级别称为 “禁用带通知的所有宏”。 新的信任中心还提供了新的其他级别,这是设置所有安全参数的中心位置。3
次单击启动未签名的宏。此外,在决定启用宏之前,可以阅读文档,这提供了一些社会工程可能性。VBA
宏存储在名为 vbaProject.bin
的文件中,存档中的路径取决于应用程序: – Word: word/vbaProject.bin
– Excel: xl/vbaProject.bin
– PowerPoint: ppt/vbaProject.bin
Microsoft OLE2
格式(结构化存储)的二进制文件,这在当前的 Open XML
规范[OXSPEC]
中没有描述。Word
的 “Document_Open”
,则可能在打开文档时自动触发。OpenDocument
和以前的 Office
版本一样,可以在具有相同安全性问题的 Open XML
文档中存储 OLE
对象。Word
的 “word/embeddings”
。 使用二进制 OLE2
格式存储 OLE
包对象。Open XML
规范中没有描述 OLE
对象存储。.xlsm
)的 Excel
工作簿作为对象存储在没有宏(.docx
)的普通 Word
文档中。 打开 Word
文档时没有警告。 但是,只要用户激活 Excel
对象,就会出现一个弹出窗口,询问是否应该启用宏。 即使安全级别是 “禁用所有没有通知的宏”,情况总是如此…Excel 2007
可以将工作簿保存为混合的 Open XML
格式,称为“二进制工作簿”,扩展名为 “.xlsb”
。 这种格式非常接近 Open XML
,除了部分数据存储在二进制文件而不是 XML
中。 这种未记录的格式看起来像以前的 Excel
版本使用的 BIFF8
。二进制工作簿可能包含宏。Office 2007
提供了一个名为 “文档检查器” 的新工具,用于检测和删除文档中的多种类型的隐藏数据。 它是 RHDTool
的改进版本,可以与 Office 2003
一起安装。OpenOffice
一样,OLE
对象不会被检测为潜在的隐藏数据,因此结果并不总是完全准确。Open XML
格式与以前的 Office
二进制格式具有相同的恶意代码和隐藏数据安全问题。 对于某些方面(如宏),默认安全设置甚至可能比以前更加宽松。Open XML
基于开放规范,Microsoft Office 2007
生成的文档也可能包含一些专有的非文档格式(例如 MS OLE2
或 BIFF
),这些部分通常对安全问题很重要。 此外,一些主要功能(如宏)不是 Open XML
规范的一部分,因此从安全角度来看,实际格式不能被视为100%
开放。OpenDocument
一样,Open XML
比封闭格式更容易分析和过滤; 然而,它的内部结构更复杂,需要更复杂的处理。 - 加强办公套件的安全设置
- 过滤网关或可移动设备上的文档
- 当然,如果可能的话,首先应用安全更新。
- 根据用户的实际需要,将宏和 ActiveX 安全级别加强到最高位置。
- 如果需要宏,请使用带有公司 PKI 的数字签名。 如果不可能,请仔细设置使用受信任的目录。(避免使用自签名证书,个人使用除外)
- 如果未使用,则禁用所有受信任的目录。 至少禁用用户具有写访问权限的那些。
- 防止很少使用的OLE包对象:禁止使用文件权限执行 “C:\Windows\System32\Packager.exe”。
MS Office 2007的特定设置:
- 禁用通知消息,以避免使用未签名的宏。
- 或者,通过设置此注册表项,甚至可以禁用 VBA 引擎,但功能有所损失:HKLM\SOFTWARE\Microsoft\Office\12.0\Common\VBAOff = 1
- 在网络上部署安全设置以改进管理任务,例如使用 GPO。在 Microsoft 网站上查找 “2007 Office System 管理模板” 以获取模板。
- 如果无法做到这一点,例如在独立工作站上,请使用 HKLM 注册表项或文件/注册表权限保护安全设置,以便用户无法修改它们。可以在上述模板中找到 Office 2007 的 HKLM 和 HKCU 注册表项。与以前的 Office 版本不同,似乎并非所有安全设置都可以使用 HKLM 密钥进行保护。例如,用户可以在 HKCU 中修改宏安全级别,除非设置注册表权限以避免它。
- 有关详细信息,Microsoft 提供了一些文档,其中包含以下建议:http://go.microsoft.com/fwlink/ LinkID=85671
OpenOffice
的特定设置:对于 OpenOffice
,宏安全级别等安全设置位于 XML
文件(.xcu
)和其他设置中。 首先从应用程序目录(Program Files
)中的 XCU
文件中读取全局设置,然后从用户配置文件(Documents and Settings
)中读取用户特定的设置。 还可以将一些设置存储在 LDAP
目录中,以便在网络上轻松部署它们。XCU
文件中的 XML
标记添加 “finalized”
和 “mandatory”
属性来保护所选设置免受用户错误的影响。Common.xcu
(在 Program Files\OpenOffice.org 2.2\share\registry\data\org\openoffice\Office\
中)来禁用对所有用户的宏支持。 这还将隐藏应用程序中的宏安全设置。 <node oor:name="Security">
<node oor:name="Scripting">
<prop oor:name="MacroSecurityLevel" oor:type="xs:int" oor:finalized="true" oor:mandatory="true">
<value>3</value>
</prop>
<prop oor:name="DisableMacrosExecution" oor:type="xs:boolean"oor:finalized="true" oor:mandatory="true"
<value>true</value>
</prop>
</node>
</node>
OpenOffice
配置,因为高级用户通常能够从备用目录运行应用程序或通过编辑某些文件来覆盖设置。 但是,此保护始终优于默认设置。Program Files\OpenOffice.org 2.2\share\registry\schema\org\openoffice\
中的 XCS
文件,尤其是 Common.xcs
。 标签
包含大多数安全设置以及有关其效果的注释。 以下是为 OpenOffice
宏选择安全设置的决策树示例:Web
,文件传输…)或可移动设备上过滤文档。 它可以包括通常的防病毒分析或更复杂的过滤过程。 此类过程的一个示例是从文档(宏,脚本,OLE
对象,…)或隐藏数据中删除所有活动内容。OpenDocument
和 Open XML
都使用 ZIP
和 XML
等标准技术,因此可以假设使用常用工具和库可以轻松分析和过滤这些格式。 实际上,可以很容易地找到所有活动元素,例如宏和对象。OpenDocument
的示例过滤器:要删除所有活动内容: - 宏:删除 Basic 和 Scripts 目录中的任何文件。
- OLE 对象:删除名称以 “Object” 开头的任何文件。
- 在 content.xml 中:
•删除 OLE 对象:<draw:object-ole>
•删除脚本:<text:script>
•删除小程序:<draw:applet>
•更新链接到宏的任何标记,例如:<office:event-listeners>
- 宏:删除任何文件 “vbaProject.bin” 和 “vbaData.xml”
- OLE 对象:删除任何文件 “* .bin”
ZIP
工具和库或 XML
文件中基于文本的搜索,使用简单的技术分析或过滤这些开放格式是非常诱人的。XML
和 ZIP
格式的本机功能。 以下是一些潜在的混淆技巧:Open XML
文档是不可靠的。 即使 “.docx”
文件永远不能包含宏,如果在网关上阻止 “.docm”
,也始终可以将 “.docm”
文档重命名为 “.doc”
。OpenDocument
存档中重命名包含宏的文件,以将 .xml
,.bsh
,.js
或 .py
替换为任何其他扩展名。 为此,只需编辑 manifest.xml
和 content.xml
即可更改指向宏文件的链接。 总之,文件扩展名不是检测 OpenDocument
中的宏的好标准。 希望目录 “Basic”
和 “Scripts”
在当前实现中具有固定名称,并且它们仅包含与宏相关的文件,因此这是一种检测或删除宏的安全方法。Open XML(OPC
)的模块化结构,可以重命名包含任何名称的宏的文件 “vbaProject.bin”
。 例如,在 Word
文档中: - 将 “vbaProject.bin” 重命名为 “no_macros_here.txt”
- 更新 “word/_rels/document.xml.rels” 中的关系
- 在 n “[Content_Types].xml” 中,将 “bin” 替换为 “txt”
Python
过滤器,保持宏活动。 因此,不可能依赖文件名来检测 Open XML
中的宏。 更安全的解决方案是使用真正的 XML
解析器来检测 [Content_Types]
.xml
(或 OLE
对象的 “oleObject”
)中的 “vbaProject”
和 “vbaData”
部分。 另一种解决方案是分析每个文件内容,寻找具有潜在误报的二进制 OLE2
标头。Internet Explorer
(参见 [IEASCII]
)一样,Office 2007
处理 “USASCII”
编码相当奇怪:所有 ASCII
码大于 127
的字符在 XML
之前只删除了它们的第 8
位内容被解析。 因此,此行为允许对过滤器/防病毒进行非常简单的混淆,而不会检查它。 以下是
标记被混淆的示例: <?xml version="1.0" encoding="us-ascii" standalone="yes"?>
1/4HIDDENTAG3/4 malware[...] 1/4/HIDDENTAG3/4
“1/4”
和 “3/4”
分别表示 ASCII
码 188
和 190
的字符。Open XML - UTF-7
编码:遵循相同的原则,可以使用 UTF-7
编码和替代字符表示来隐藏 XML
标记。 现在禁止使用 UTF
编码,但 Office 2007
允许它(就像 Internet Explorer
一样)。 这是一个例子: <?xml version="1.0" encoding="UTF-7" standalone="yes"?>
+ADw-HIDDENTAG+AD4- malware[...] +ADw-/HIDDENTAG+AD4-
Open XML
规范 [OXSPEC]
明确指出 XML
文件中只允许使用 UTF-8
和 UTF-16
。 可以注意到,OpenOffice XML
解析器不允许这些混淆。ZIP
存档中,文件名在 2
个位置,存档末尾的中央目录和每个文件内容之前的标题中重复。 文件大小和其他信息也是如此。 通过仅修改其中一个文件名,可以创建格式错误的 ZIP
存档。 许多应用程序不检查这些名称的一致性,有些仅依赖于一个位置或另一个位置。 以下是此类格式错误的 ZIP
存档的示例:OpenOffice
仅依赖于中心目录。 如果过滤器或防病毒软件只读取文件头,则可以使用此技术欺骗它。MS Office 2007
检查 2
个文件名之间的一致性。 但是,如果它检测到任何问题,它会询问用户是否应该修复该文件。 奇怪的是,文件总是被修复,以便无论头部或中心目录是否已更改,宏都可以保持可执行! 然后,可以使用此技术绕过任何仅依赖于其中一个文件名的过滤器/防病毒软件。ZIP
格式在过去几年中得到了改进,以增加档案的最大大小和压缩率。 Open XML
规范明确允许使用新的 Zip64
格式; 因此,如果某些过滤器/防病毒软件无法正确处理此格式,则可以绕过这些过滤器/防病毒软件。OpenDocument
和 Open XML
分析不能被视为一项简单的任务,即使这些是基于 ZIP
和 XML
的开放格式。 以下是检查安全分析的一些重要事实: - 使用强大的 ZIP 库,能够检测格式错误的档案。
- 在 ZIP 存档中,拒绝中央目录和文件头之间的任何不一致。
- 使用不区分大小写的函数来处理 ZIP 存档中的文件名和路径。
- 拒绝库不支持其格式的任何 ZIP 存档,或者规范不允许的任何 ZIP 存档:Zip64,新压缩算法,加密,......
- 始终使用完整而强大的 XML 解析器。 切勿对 XML 文件使用简单的文本搜索或正则表达式。
•Open XML 解析尤其复杂,因为它需要遵循 OPC 原则(Open Packaging Conventions,参见 [OXSPEC]第 2 部分)对 XML 数据进行更深入的分析。
- 检查 XML 文件编码:拒绝规范不允许的任何编码,并使用严格解码模式拒绝任何异常字符。
- 如果可能,请利用具有开放规范的供应商提供的 XML 模式。
- 拒绝文档的内部结构和文件名之间的任何不一致。(例如,Open XML 文档永远不应该命名为 “.doc”)
OpenDocument
和 Open XML
都非常有前途,从安全的角度来看,它们的开放规范非常有用。 活动内容和隐藏数据过滤比以前容易得多。XML
和 ZIP
混淆技术OpenDocument
和 Open XML
之前需要一些时间。 本文提出了一些改进这些格式分析的想法。[ESAT1] 使用 OpenOffice.org 文档深入分析病毒威胁,DeDrézigué,Fizaine,Hansma(ESAT),计算机病毒学杂志,2006 年 http://www.springerlink.com/content/17729904/?k=openoffice
[ESAT2] Le risque virus sous OpenOffice 2.0.x,Filiol,Fizaine(ESAT),MISC magazinen˚27,09/ 2006。
[FSECURE] OpenOffice 安全,S. Rautiainen(F-Secure),VB2003 会议,http//www.fsecure.com/weblog/archives/openoffice_security.pdf
[PACSEC06] OpenOffice / OpenDocument 和 MS Open XML 安全,P. Lagadec ,PacSec 2006 大会,http://pacsec.jp/psj06archive.html
[SSTIC07] Sécuritédes 格式 OpenDocument et Open XML,P。Lagadec,http ://actes.sstic.org/SSTIC07/Securite_OpenDocument_OpenXML/
[ECMA] Ecma International,国家机构对 ISO / IEC DIS 29500(ECMA-376)“办公室开放 XML 文件格式 ”快速通道选票的 30 天评论的评论,Ecma / TC45 / 2007/006,http://www.ecmainternational.org/news/TC45_current_work/Ecma%20responses.pdf
[SSTIC03] Formats de fichiers et code malveillant,P。Lagadec,SSTIC03,http://actes.sstic.org/SSTIC03/Formats_de_fichiers/
[CVEMSO] 常见漏洞和曝光,关键词 “Microsoft Office”,http://cve.mitre.org/cgibin/cvekey.cgi keyword=microsoft+office
[CVEOOo] 常见漏洞与披露,关键词 “OpenOffice”,http://cve.mitre.org/cgi-bin/cvekey.cgi keyword=openoffice
[ESAT3] 分析 du risque virus sous OpenOffice.org 2.0.x,E。Filiol(ESAT),臀部会议 SSTIC06,http ://actes.sstic.org/SSTIC06/Rump_sessions/SSTIC06-rump-Filiol Risque_viral_sous_OpenOffice.pdf
[OOoURL] OpenOffice.org URL 处理安全漏洞(Linux / Solaris),http://www.openoffice.org/security/CVE-2007-0239.html
[XSRF] 跨站请求伪造,维基百科,http://en.wikipedia.org/wiki/XSRF
[OSSIR03] La fuite d’informations dans lesdocumentspropriétaires,P。Chambet(EdelWeb),Eric Filiol(ESAT),E。Detoisien,OSSIR 6/10/2003,http ://www.ossir.org/windows/supports/2003/2003-10-06/OSSIR Fuite%20infos.pdf
[ODSPEC10] Office应用程序的开放文档格式(OpenDocument)v1.0,OASIS 标准,2005 年 5 月 1 日,http://docs.oasisopen.org/office/v1.0/OpenDocument-v1.0-os.pdf
[ODSPEC11] Office 应用程序的开放文档格式(OpenDocument)v1.1,OASIS标准,2007年2月1日,http://docs.oasisopen.org/office/v1.1/OpenDocument-v1.1.pdf
[OXSPEC] Office Open XML文件格式 - 标准 ECMA-376,http://www.ecma international.org/publications/standards/Ecma376.htm
[OSFP] OOo 脚本框架和 Python,http://udk.openoffice.org/python/scriptingframework/index.html
[OOoPy] OOoPy,用于编辑 OpenDocument 的 Python 模块,http://ooopy.sourceforge.net
[MS06-065] Secunia MS06-065 咨询,http://secunia.com/advisories/20717
[XPS] Microsoft XML Paper Specification - XPS,http://www.microsoft.com/whdc/xps/default.mspx
[IEASCII] http://www.securityfocus.com/archive/1/437948