标题:Open Document 和 Open XML安全性(OpenOffice.org and MS Office 2007)
- 摘要,
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
混淆技术,并描述了如何设计过滤器以安全地去除不需要的部分。
1 简介
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
1.1 注释
这些是用于此分析的产品和版本:
-
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"
。
2 两种新的 “开放” 格式
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
的安全性分析由于其开放状态而更加容易。然而,他们的规格的复杂性和缺乏一些细节并没有使过于简单。
3 关于漏洞利用的几句话
- 如今,有关
Office
文档的最常见威胁并未涉及到宏或OLE
对象,而是基于办公套件[CVEMSO,CVEOOo]
中的漏洞。由于OpenDocument
和Open XML
由结构化且定义良好的XML
而不是二进制数据组成,因此可以假设与格式解码相关联的漏洞的可能性要小得多。此外,如果办公室应用程序使用严格的XML
模式来验证数据,则格式错误的文档不应该能够触发潜在的漏洞。但是,OpenDocument
和Open XML
不仅包含XML
:二进制部分(如位图图片和OLE
对象)仍然存在Office
套件还依赖外部库来处理某些类型的数据,这些库可能很容易受到攻击。 另一个问题是,由于其开放的规范,将创建许多第三方应用程序来处理这些格式。由于格式不是那么简单,可以猜测在这些应用程序中也会发现漏洞。
4 OpenDocument 和 OpenOffice.org
4.1 OpenDocument 格式
- 当前的
OpenDocument
规范[ODSPEC11]
仅涵盖OpenOffice v2
套件处理的各种文件格式的子集。仅描述了文本文档,电子表格,演示文稿和矢量绘图。 尽管其他文档类型(如数据库,HTML
模板和数学公式)共享非常相似的结构。下表显示了与OpenOffice v1
和v2
使用的大多数本机格式关联的扩展。OpenDocument
规范中描述的格式以粗体突出显示。
4.2 内部结构
- 每个文档都存储在
ZIP
压缩存档中。它基本上由几个XML
文件组成,这些文件位于存档的根目录或子目录中。以下是常见文档中的主要XML
文件:
- content.xml:文档正文- styles.xml:样式数据- meta.xml:元数据(作者,标题,...)- settings.xml:文档的 OOo 设置- META-INF / manifest.xml:文件描述
- 请注意,其他非
XML
文件也可能存储在存档中:
- 图片和缩略图:JPEG,PNG,SVG等- 嵌入式图表/图纸/文档,OLE 对象
4.3 宏
- 最重要的安全问题涉及宏。
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
宏提供了有限的支持。
4.4 OLE对象
- 在宏之后,第二个主要的安全问题涉及嵌入的
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
4.5 脚本
- 可以使用
Javascript
或VBscript
语言在文档中嵌入HTML
脚本。 这些不是由OpenOffice
直接运行的。 但是,如果文档保存为HTML
,则它们可能由浏览器启动,并且可以触发漏洞利用。 脚本存储在content.xml
中的<text:script>
标记中,例如:
<text:script script:language=”JavaScript”>alert("test script");</text:script>
- 脚本的源代码可以直接包含在标记中,也可以放在外部脚本文件中,由
“xlink:href”
属性引用。
4.6 Java 小程序
- 也可以在文档中存储
Java
小程序。 这与用Java
语言编写的宏不同。 这些编译的applet
在OpenOffice
内部的Java
沙箱中运行。 由于沙盒,恶意applet
无法做有害的事情。 但是,如果存在漏洞,有时可以避开沙箱,就像OpenOffice 2.0.2
中的情况一样。
4.7 URL 链接
- 文档可以包含
URL
链接。 当用户单击它们时,如果是外部URL
,OpenOffice
将使用提供的地址打开浏览器。 希望似乎不可能以这种方式启动javascript
或vbscript URL
,因为以“javascript:...”
和“vbscript:...”
开头的URL
被过滤掉了。 - 但是,如果浏览器已在敏感
Web
应用程序中进行了身份验证,则仍可能将用户定向到恶意网站,或启动XSRF
攻击(跨站点请求伪造,[XSRF]
)。 - 此外,最近在
OpenOffice v2.1
中发现的漏洞使得在Linux
和Solaris
上执行本地命令成为可能,方法是在URL [OOoURL]
中插入shell
的转义字符。
4.8 隐藏数据 - 信息泄露
- 就像
MS Office
一样,OpenDocument
文件可能会向用户隐藏敏感数据:元数据,隐藏文本,注释,修订标记等…当文档在Internet
上发布或发送到公司网络外时,这可能会成为一个问题。 - 为解决此问题,
OpenOffice
提供了一些有趣的功能,可在签名,导出为PDF
或保存时警告隐藏信息。 但是,这在所有情况下都不够,因为这不包括可能隐藏在OLE
对象中的数据。
4.9关于 OpenDocument / OpenOffice 安全性的结论
- 有许多方法可以将活动内容包含到
OpenDocument
文件中,并可能启动恶意代码。 即使有一些保护可以避免这种情况,但它们都不是绝对安全的。 此外,现在在OpenOffice [CVEOOo]
中经常发现漏洞,这需要保持警惕并经常更新软件。 - 即使
OpenDocument
是一种开放格式,文件有时也可能包含封闭格式的部分,例如Microsoft OLE
对象。 总之,可以说OpenOffice
并不比Microsoft Office
更安全或更不安全。 我们已经看到,我们可以在恶意软件或隐藏数据中发现类似的安全问题。 当然有一些差异,某些功能在一种产品中比另一种更安全。 - 但是,分析和过滤
OpenDocument
格式的活动内容或隐藏数据要比通常的专有办公格式简单得多。
5 Open XML 和 Microsoft Office 2007
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
文档。如果安装了转换器包,下面描述的大多数问题都与这些版本有关。
5.1 打开 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宏,打印机设置,......
5.2 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”
,则可能在打开文档时自动触发。
5.3 OLE对象
- 与
OpenDocument
和以前的Office
版本一样,可以在具有相同安全性问题的Open XML
文档中存储OLE
对象。 - 这些对象通常根据应用程序以其原始格式存储在存档中的各个位置:例如
Word
的“word/embeddings”
。 使用二进制OLE2
格式存储OLE
包对象。 - 与宏一样,当前的
Open XML
规范中没有描述OLE
对象存储。 - 有些情况会导致奇怪的结果。 例如,可以将带有宏(
.xlsm
)的Excel
工作簿作为对象存储在没有宏(.docx
)的普通Word
文档中。 打开Word
文档时没有警告。 但是,只要用户激活Excel
对象,就会出现一个弹出窗口,询问是否应该启用宏。 即使安全级别是 “禁用所有没有通知的宏”,情况总是如此…
5.4 Excel 2007 二进制工作簿
Excel 2007
可以将工作簿保存为混合的Open XML
格式,称为“二进制工作簿”,扩展名为“.xlsb”
。 这种格式非常接近Open XML
,除了部分数据存储在二进制文件而不是XML
中。 这种未记录的格式看起来像以前的Excel
版本使用的BIFF8
。二进制工作簿可能包含宏。
5.5 隐藏数据 - 信息泄露
Office 2007
提供了一个名为 “文档检查器” 的新工具,用于检测和删除文档中的多种类型的隐藏数据。 它是RHDTool
的改进版本,可以与Office 2003
一起安装。- 这当然是一个非常有趣的功能。 就像
OpenOffice
一样,OLE
对象不会被检测为潜在的隐藏数据,因此结果并不总是完全准确。
5.6 关于 Open XML 和 MS Office 2007 安全性的结论
- 根据此分析,新的
Open XML
格式与以前的Office
二进制格式具有相同的恶意代码和隐藏数据安全问题。 对于某些方面(如宏),默认安全设置甚至可能比以前更加宽松。 - 即使
Open XML
基于开放规范,Microsoft Office 2007
生成的文档也可能包含一些专有的非文档格式(例如MS OLE2
或BIFF
),这些部分通常对安全问题很重要。 此外,一些主要功能(如宏)不是Open XML
规范的一部分,因此从安全角度来看,实际格式不能被视为100%
开放。 - 与
OpenDocument
一样,Open XML
比封闭格式更容易分析和过滤; 然而,它的内部结构更复杂,需要更复杂的处理。
6 如何防范这些安全问题
- 有两种主要的互补技术解决方案可以保护系统免受因办公文档导致的恶意内容和信息泄漏:
- 加强办公套件的安全设置- 过滤网关或可移动设备上的文档
- 我们没有提到组织解决方案,例如可以通过文档更好地告知用户恶意内容和信息泄漏。
6.1 OpenOffice 和 MS Office 2007 的安全设置
- 以下是根据需要改进两个办公套件的安全设置的一些通用原则
- 当然,如果可能的话,首先应用安全更新。- 根据用户的实际需要,将宏和 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
。 标签<group oor:name =“Security”>
包含大多数安全设置以及有关其效果的注释。 以下是为OpenOffice
宏选择安全设置的决策树示例:
6.2 过滤文件 - 内容分析和防病毒
- 可以在网关(用于电子邮件,
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>
- Open XML的示例过滤器:要删除所有活动内容:
- 宏:删除任何文件 “vbaProject.bin” 和 “vbaData.xml”- OLE 对象:删除任何文件 “* .bin”
- 用于
OpenDocument
和Open XML
的非常简单的过滤器:这是Python
中一个非常简单的过滤器,它只删除文档中潜在的活动文件。
6.3 绕过防病毒和过滤器
- 正如我们所看到的,使用常见的
ZIP
工具和库或XML
文件中基于文本的搜索,使用简单的技术分析或过滤这些开放格式是非常诱人的。 - 但是,攻击者可能会以多种方式模糊恶意内容以绕过过滤网关或防病毒软件。 为此,只需使用办公套件,
XML
和ZIP
格式的本机功能。 以下是一些潜在的混淆技巧: - 使用宏重命名 Open XML 文档: 首先,仅使用文件扩展名来过滤掉带有宏的
Open XML
文档是不可靠的。 即使“.docx”
文件永远不能包含宏,如果在网关上阻止“.docm”
,也始终可以将“.docm”
文档重命名为“.doc”
。 - 重命名 OpenDocument 宏: 可以在
OpenDocument
存档中重命名包含宏的文件,以将.xml
,.bsh
,.js
或.py
替换为任何其他扩展名。 为此,只需编辑manifest.xml
和content.xml
即可更改指向宏文件的链接。 总之,文件扩展名不是检测OpenDocument
中的宏的好标准。 希望目录“Basic”
和“Scripts”
在当前实现中具有固定名称,并且它们仅包含与宏相关的文件,因此这是一种检测或删除宏的安全方法。 - 在 Open XML 中重命名 VBA 宏: 由于
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
标头。 - Open XML - US-ASCII 编码和 “混淆位”: 与
Internet Explorer
(参见[IEASCII]
)一样,Office 2007
处理“USASCII”
编码相当奇怪:所有ASCII
码大于127
的字符在XML
之前只删除了它们的第8
位内容被解析。 因此,此行为允许对过滤器/防病毒进行非常简单的混淆,而不会检查它。 以下是<HIDDENTAG>
标记被混淆的示例:
<?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 存档 - 重复文件名: 在标准
ZIP
存档中,文件名在2
个位置,存档末尾的中央目录和每个文件内容之前的标题中重复。 文件大小和其他信息也是如此。 通过仅修改其中一个文件名,可以创建格式错误的ZIP
存档。 许多应用程序不检查这些名称的一致性,有些仅依赖于一个位置或另一个位置。 以下是此类格式错误的ZIP
存档的示例:
OpenOffice
仅依赖于中心目录。 如果过滤器或防病毒软件只读取文件头,则可以使用此技术欺骗它。MS Office 2007
检查2
个文件名之间的一致性。 但是,如果它检测到任何问题,它会询问用户是否应该修复该文件。 奇怪的是,文件总是被修复,以便无论头部或中心目录是否已更改,宏都可以保持可执行! 然后,可以使用此技术绕过任何仅依赖于其中一个文件名的过滤器/防病毒软件。- Zip64 压缩:
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”)
7 结论
- 新的办公格式
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