【问题标题】:security risk of scripts in ooxml word documentooxml word文档中脚本的安全风险
【发布时间】:2015-12-14 20:34:02
【问题描述】:

我正在考虑我正在开发的服务的一项功能,但我担心恶意代码注入。该服务是数据集和 docx 文件的简单合并。

我需要聚合合并代码,我想到的唯一解决方案是使用 ooxml。这很好用,但我担心如果攻击者发现了这一点,他们可以插入脚本来作恶。

有没有办法强化我的系统以防止这种注入,或者甚至有人可能以这种方式利用系统?

我不知道这里需要代码,但如果需要,我可以提供。本质上,我有一个函数可以确定字符串是否为 XML,尝试对其进行解析,如果它很好,则使用 openxml 框架 openxmlreader 类将其转换为 openxmlelement。然后将其插入到替换合并字段占位符的文档中。

【问题讨论】:

  • 这可能会在security.stackexchange.com得到更好的答案
  • @cFrozenDeath 我考虑过,但这与具体的代码有关,并且该站点通常更多地是关于配置。
  • Word 和 OpenXML 是我更擅长的领域,所以我并没有完全了解您认为在哪些流程中可能存在安全风险?您是否认为“某人”可以在 Word 文档中插入可能是恶意的内容?
  • 无法将可执行脚本插入 Word 文档本身。可执行脚本是 VBA - 二进制格式,必须作为 PART 插入到 Zip 包中,具有对应关系,并且需要更改文档类型和文件扩展名。除此之外,还有一些域代码有可能访问外部文件,但 Word 不会在未经用户批准的情况下在打开文档时更新(执行)它们。我认为您的代码可以检查文档中是否存在不良内容,或者您​​的代码没有插入的内容,如果这是一个真正的问题的话。
  • @Cindy Meister 感谢您证实了我的怀疑。我想用 word 保护脚本的方式(我的意思是 vba)我会很安全,但我对此没有超级经验。我担心在 cdata 中包含脚本的合并数据会被插入到我的结果文档中。如果确实它必须是包装的“一部分”,那么我应该没问题。再次感谢。

标签: c# openxml


【解决方案1】:

我了解您担心在编辑文件的 Open XML 期间将可执行“脚本”(VBA) 插入到 docx 文件中的危险。

VBA(宏)包含在文档 ZIP 包中单独的“部分”中。它们必须是专有的二进制格式,必须作为一个或多个 PART 文件插入到 Zip 包中,并具有对应关系。此外,需要更改文档类型和文件扩展名。

因此不存在恶意代码能够将可执行脚本插入到正在写入文档包的任何 XML 部分的 XML 字符串的危险。

除此之外,还有一些域代码可能会访问外部文件,但未经用户批准,Word 不会在打开文档时更新(执行)它们。我认为您的代码可以检查文档中是否存在不良内容,或者您​​的代码未插入的内容,如果这是一个真正的问题。

【讨论】:

  • 谢谢,这回答了我的担忧。为了以防万一,我可能会添加一些代码来检查任何 vba 的模板 (.docx) 文件。
  • 只要文件是.docx,就不能执行宏代码。事实上,如果文件包含宏,Word 甚至不会打开扩展名为 docx 的文件 - 它会认为内容“已损坏”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 2020-06-25
  • 1970-01-01
  • 2011-09-14
  • 2010-11-24
  • 2012-08-17
相关资源
最近更新 更多