大家好,Office 安全团队负责测试 Office 文件验证(代码名称:网关守卫)。人们对 Microsoft Office 2010 的新文件验证功能存在一些误解,在此我希望消除这些误解,同时说明原因及具体操作。

为什么要验证二进制文件?

一直以来,Office 二进制格式的标准不断演化,复杂性不断增加。对于这些格式复杂的原因,在其他地方已详细讨论过(请参阅此处的 Joel Spolsky 的文章),因此我们在此不作探讨,但此处完好记录了这些二进制格式。我们发现,恶意攻击者将二进制文件用作攻击手段来感染目标用户,因此我们希望找到一种阻止此问题发生的方法。我们团队采取的一项措施是:当 Microsoft 收到一个新的 Office 文件格式攻击的报告时,我们就会通过验证进行检查,以了解我们这项措施的效果。到目前为止,效果相当不错!

什么是网关守卫?

Office 文件验证是一种功能,该功能最初是在 Publisher 2007 中引入的,用来验证 Publisher 的 PUB 文件。它可验证特定二进制文件是否符合应用程序的要求。在 Office 2010 中,我们有效扩展了该功能,以包含 Word、Excel 和 PowerPoint 的二进制格式。请注意,该功能仅适用于二进制格式(即 PUB、DOC、XLS、PPT 等),而不能验证基于 XML 的文档(即 DOCX、XLSX、PPTX 等),也不能验证宏或其他自定义项目。它可验证的对象是文件结构。例如,如果有一个具有 FONTINDEX 结构的 XLS 文件,而 ifnt 值设置为 4(对此特定项目无效的值),则无法进行验证。

它的工作原理是什么?

当通过 Word、PowerPoint 或 Excel 加载不可信的二进制文件(即不在受信任位置且不是受信任文档)时,该功能将进行检查,查看加载的文件是否是有效文件。主要是检查应用程序即将解析的文件的具体位数,即相关 OLESS 流。如果确定是有效文件,则会按正常方式打开,无需移走。但如果发现文件无效,则会将其发送到(默认情况)受保护的视图。

如果单击该文本,您将转到 Backstage 视图,您可在其中以完整的应用程序体验形式打开此文件。请注意,此操作相当于作出信任决定,这会将此特定文件标记为受信任文件,在下次打开此文件时也不会对其进行验证。

在处理完文件并关闭应用程序后,您可能会看到如下提示:

该提示最多每两周显示一次(每个应用程序),以便您通过 Windows 错误报告选择是否将无效文件发送给我们。当然,如果您不希望共享该信息,也可以删除一两个文件,但如果将文件发送给我们,我们便可以进一步分析它,从而改进 Office 文件验证功能。

如何控制此操作?

通过策略

我们发现许多管理员(或有安全意识的用户)可能不喜欢打开验证失败的文件,因此我们推出了一个组策略来控制文件验证失败时的默认操作。这些策略位于组策略模板中应用程序的“选项”\“安全性”\“信任中心”\“受保护的视图”下,它视应用程序设置而定。

通过注册表

有以下几个用来控制 Office 文件验证的各个方面的注册表项。

常用注册表项

HKCU\Software\Microsoft\Office\14.0\Common\Security\FileValidation \ReportingInterval - 这是一个 DWORD,它可控制显示将文件发送到 Windows 错误报告的对话框的间隔天数。

HKCU\Software\Microsoft\Office\14.0\Common\Security\FileValidation\DisableReporting - 这是一个 DWORD,如果设置为 1,则禁止显示对话框(因此禁止向 Windows 错误报告发送文件)。

应用程序特定注册表项

适用于我将使用“Excel”的这些示例,但对“PowerPoint”和“Word”同样有效

HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\EnableOnLoad – 这是一个 DWORD,如果设置为 0,则 Office 不会验证文件。

HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\DisableEditFromPV – 这是一个 DWORD,如果设置为 1,则禁止编辑验证失败的文件。

Excel 特定注册表项

HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\PivotOptions – 这是一个 DWORD,可控制验证文件的透视表缓存(由于性能原因)的特定选项。

0 = 从不验证任何透视表缓存
1 = 在以下情况下验证透视表缓存:(1) 文件是从 Internet 打开的,并且该平台在本地将文件标记为来自 Internet。(2) 文件是 Microsoft Outlook 电子邮件附件。(3) 用户专门在受保护的视图中打开文件。(4) 从缓存 Internet 内容的本地已知“非安全位置”以及任何特殊用户定义的不受信任位置打开文件,除非通过(其他)注册表项禁用受保护的视图的非安全位置。(5) 在加载时打开文件并解析透视表缓存。
2 = 始终验证所有透视表缓存

通过脚本

对于基于 Office 构建的自定义解决方案,向应用程序对象添加了一些有趣的属性,它们能够对该会话禁用文件验证。还有一个额外的 Excel 选项可控制透视表缓存(即数据透视表和数据透视图的文件缓存数据)的验证。下面是一个 Powershell 脚本示例,演示如何设置这两个 Excel 选项(但 FileValidation 属性也适用于 Word 和 PPT):

$excel = New-Object -comobject Excel.Application
# valid values are:
# msoFileValidationDefault = 0
# msoFileValidationSkip = 1
$excel.FileValidation = msoFileValidationSkip
# valid values are:
# xlFileValidationPivotDefault = 0 (do whatever you’d normally do, i.e. follow registry & default settings),
# xlFileValidationPivotRun = 1 (validate all pivot caches),
# xlFileValidationPivotSkip = 2 (don’t validate any pivot caches)
$excel.FileValidationPivot = xlFileValidationPivotSkip

太棒了,但效果如何?

我们做了大量工作来确保文件验证的速度。是的,现在打开一个文件需要更长的时间,但我们通常只需多花几毫秒便可完成验证。实际上,您很难找到一个其验证时间超过一秒的标准大小的文件,大多数文件的验证时间都在 1 到 100 毫秒之间。当然,如果文件很大非常复杂且需要一小时才能打开,那么确实需要超过一秒的时间才能完成验证,但您可能根本注意不到。对于文件验证时间超过 5 秒(因此我们将在此探讨很复杂的文件)这一情况,我们为您提供了选项,允许您取消验证并直接转到受保护的视图。毕竟,我们通常不能让您直接打开它,因为那样黑客可能会编写很复杂的文件来接管您的计算机,这正是该功能尝试阻止的情况。

另外,对于验证时间很长的任何文件(如果文件通过验证、未通过验证或跳过验证),系统会显示与有问题的文件相同的 Windows 错误报告提示;向您提供选项,以便您将文件发送给我们进行进一步分析。

概要

一天,在与开发人员聊天时,我们记下了这样一段对话:

“你们在开发什么?”

“Office 文件验证”

“那是什么东西?”

“检查 Office 文件,确保文件有效”

“那么,你们这两年来一直在编写布尔函数?”

“噢…嗯…是的,这是一个重要的函数!”

到最后,Office 文件验证实际上只是一个告知应用程序文件是否有效的 Yes/No 函数,但它确实是一个重要的函数!实际上,它还是一个复杂的函数,了解文件格式规范的人都能证明这一点。那么,在此您可以一言以蔽之:Office 文件验证功能可检查二进制文件,以确保文件的重要位有效。如果您认为我们错了,您可以信任文件,也可以告诉我们!

转载于:https://www.cnblogs.com/chinatechnet/archive/2010/03/10/1679466.html

Office 2010 文件验证相关推荐

  1. 文件保存到服务器失败,Office 2010在服务器共享文件夹中保存文件失败

    服务器:Windows 2003简体中文标准版 with SP2 客户端: 1 Windows XP Pro简体中文 with SP3 + Office 2010 简体中文标准版 2 Windows  ...

  2. 解决Office 2010打开文件提示“文件已损坏,无法打开。”的问题

    原文地址为: 解决Office 2010打开文件提示"文件已损坏,无法打开."的问题 今天我的win7安装了一下office2010,但在使用的过程中发现大多数文件都没有办法正常打 ...

  3. 解决Microsoft Office 2010无法打开.doc文件的问题

    今天突然碰到我的Microsoft Office 2010无法打开.doc文件的问题,出现如下图的错误: 开始以为文件损坏了,由于文件比较重要,不甘心就这么算了,就试着打开其他的word文档,发现do ...

  4. Microsoft Office 2010 激活文件的备份和还原方法

    安装激活 Microsoft Office Professional Plus 2010 以后,请注意备份激活文件"tokens.dat".以便今后再次重新安装原有激活版本时,可以 ...

  5. (亲测)Excel多开方法,多文件独立窗口打开,同时显示左右对比 - Excel、Word等 - 微软Office 2010

    效果图 实现方法 准备好多个excel或者word文档,例如 1) 公司人员信息汇总表.xlsx 2) 考勤记录.xlsx 3) 身份证信息提取文档.xlsx 打开其中一个文档 在windows任务栏 ...

  6. Win7下,Office 2010和Adobe Acrobat Professional 8.1不兼容:PDFMaker文件遗失

    转自:http://againinput4.blog.163.com/blog/static/172799491201112284712656/ [已解决]Win7下,Office 2010和Adob ...

  7. 用计算机管理员同步一下文件,《计算机应用基础(Windows 7 Office 2010)同步训练》0711.docx...

    <计算机应用基础(Windows 7 Office 2010)同步训练>0711 第1章 计算机基础知识1.1 了解计算机[例1]:计算机辅助系统中的CAD是指______________ ...

  8. Office 2010 中受保护的视图

    大家好,我叫 Vikas,在 Office 可信计算安全团队工作.今天我将向各位详细介绍我一直从事的称之为"受保护的视图"的功能.受保护的视图是 Office 2010 中新增的深 ...

  9. 从Office 2010的华丽转型看微软的战略野心

    记者/谭茂 对于微软即将推出的Office 2010产品,微软高级副总裁Chris Capossela曾充满信心地评价:"Office 2010将和Exchange 2010.SharePo ...

  10. 搭建Office 2010 KMS服务器

    上一篇博文已经谈到搭建Windows 的KMS服务器,在此基础上在搭建Office的 KMS服务器就方便多了.Office 2010 的KMS服务器激活分为两种方式,第一种方式是通过电话激活,第二种方 ...

最新文章

  1. VC++ GetSafeHwnd()和GetSafeHandle()
  2. Leangoo敏捷开发项目管理软件-工作日志
  3. 绝地服务器维护7月5日,绝地求生7月5日更新到几点 吃鸡更新维护公告
  4. esxi宿主机的本地存储-非活动
  5. 走向.NET架构设计—第三章—分层设计,初涉架构
  6. 移植uboot之修改代码支持NorFlash记录
  7. ElasticSearch可视化工具Dejavu安装使用
  8. Redis 基础——五大类型与数据结构
  9. angelajs中ajax,前端测试数据怎么利用Mock.js进行生成
  10. Log4j与common-logging联系与区别
  11. Java 实现视频裁剪(附代码) | Java工具类
  12. STM32_I2SSAI
  13. AD7124-4 精度
  14. WickedEngine 开源游戏引擎
  15. WIN7(32位)VS2010+openCV 2.4.10+PCL 1.6.0+CUDA 6.5.14+CMake 3.2.1+SSBA-3.0配置
  16. 【深度学习】嵌入式人工智能概述
  17. 练习1000 scanf 用法
  18. unity android录制视频教程,Unity移动端视频录制,Android和IOS都支持
  19. 从零搭建一辆ROS小车
  20. 开机广告页面2017流行样式 dialogTheme的popuwindow版本

热门文章

  1. 解决extremeComponents中文按拼音排序问题
  2. 创建数据库索引的几种方法
  3. java解析魔兽争霸3录像_Java解析魔兽争霸3录像W3G文件(五):Action和APM计算
  4. 深度学习技术在遥感中应用的综述
  5. Linux 磁带机型号,请教一下,爱华的磁带机型号大全,里面的字母什么意思?
  6. 动态爱心(C/C++)
  7. 笔记本安装 ubuntu 触摸板失灵
  8. php编辑日历,【PHP】制作日历
  9. 5000系列组装拆卸单成本
  10. mx350显卡天梯图_2020年显卡天梯图(2020.04月更新)