了解有关本尼·查尔尼(Benny Czarny)所著《颠覆性的网络安全》一书的更多信息

了解更多
我们利用人工智能进行网站翻译,虽然我们力求准确,但不一定总是 100%精确。感谢您的理解。

嵌套有效载荷是如何通过签名扫描的?

在评估文件之前,必须先对其进行解析,而现代文件格式的内容嵌套方式往往导致解析无法完全覆盖所有内容。
作者: 约瑟夫·阮,产品营销经理
分享此贴

2025年6月,思科披露了CVE-2025-20282,这是其身份服务引擎(Identity Services Engine)中一个最高严重级别的漏洞。其根本原因是上传环节缺少文件验证检查,这可能导致未经身份验证的攻击者将经过特殊构造的文件放置在具有特权的目录中,并以root权限执行该文件。该缺陷出现在检测环节之前,即在任何扫描引擎运行之前,系统就已接受了该文件。

这种模式并非某一种产品所独有。堆栈中的引擎数量很少会成为限制因素。文件必须先经过解析才能进行评估,而现代文件格式的嵌套方式往往导致解析过程无法触及所有内容。

为什么扫描结果显示没有异常

基于签名的扫描是通过匹配字节来实现的。扫描引擎会维护一个由已知恶意软件提取的哈希值和字节模式组成的数据库,只有当文件中出现与之匹配的字节时,才会被检测出来。但在内容嵌套的情况下,有几个因素会阻碍这种检测机制的生效。

  • 扫描程序读取的是父文件,而非其中的对象。扫描时,系统会将当前文件视为一个单一的二进制对象,并将其与签名数据库进行比对。嵌套内容以压缩或编码形式存储,因此位于文档流中的可执行文件与磁盘上的同一可执行文件几乎没有任何相同的字节序列。数据库所查找的模式在文件存储时并不存在,只有在解压该数据流后,才能与之匹配。
  • 无法扫描的文件看起来与正常文件无异。 结构错误会导致解析失败。引擎无法完成评估,因此该文件会被跳过而非被拦截,而“无法评估”的结果在下游处理过程中与“未发现任何内容”的结果无法区分。
  • 格式设计本身也可能造成误导。一个多格式文件同时符合两种格式规范,因此一个解析器将其识别为一种格式,而该文件的行为却完全不同。
  • 递归是有局限的。嵌套容器受深度限制和扫描超时限制的约束,这自有其道理,因为无限制的递归本身就构成一种拒绝服务风险。位于该边界之下的有效载荷永远不会被评估,而将其放置在引擎无法触及的更深层,所需的精力远比绕过该限制要少得多。

最终得出的判定结果,其实际含义并不像表面看起来那么明确。“无结果”意味着在引擎能够解析的文件部分中,未发现任何已知的匹配模式。这一结果既未说明文件内部的组成部分,也未说明引擎从未打开过的文件层。

每一层都有其作用。其中缺了一层

基于签名的扫描从来不是孤立存在的。现代文件安全架构通常采用分层设计,其周围的各层正是为了弥补模式匹配无法覆盖的漏洞而存在的。

文件类型识别是通过文件的头部信息(而非其声明的扩展名)来确定文件的真实类型。这种方法设计上速度快且仅进行表面级分析,其目的是决定文件的归属位置,而非分析文件内部内容。动态分析则是在受控环境中观察文件的行为。它是应对未知威胁的合适工具,且在有选择地应用(而非对每个文件都进行分析)时效果最佳。

每一层都发挥着各自的作用,但当有效载荷始终与承载它的文件未分离,或位于深度限制之下时,该内容就永远无法到达这些层中的任何一层,因此增加更多层也无济于事。在完全没有净化路径的格式中,这种盲点的影响范围最大:例如数据库文件、GIS数据、AI模型文件。由于这些格式无法重建,因此按定义,本应拦截未知威胁的那一层便无法发挥作用。

缺失的一环是一个专门负责首先建立结构基准真相的层:根据文件格式规范解析文件,提取其中的每个嵌入组件,并使这些组件能够单独供下游所有环节使用。这就是“文件结构验证”功能旨在解决的问题。

文件结构验证如何弥合差距

文件结构验证会在栈中的其他环节启动之前运行。它会根据格式规范对160多种文件类型(包括GIS、数据库和AI模型格式)进行验证,将文件分解为各个组成部分,并对每个组成部分应用相应策略。

对象将被路由至具备相应评估能力的引擎:Metascan™Multiscanning 、Adaptive 、Sandbox 、Proactive DLP™ 技术,或OPSWAT Alin AI。父文件将在适用情况下继续流向 Deep CDR™ 技术进行清理。

这里的关键在于对扫描效果的影响。签名匹配仍然是识别已知恶意软件最快且最经济的方式,而文件结构验证并不能取代这一工作。它改变的是引擎处理的对象。有效载荷以独立文件的形式呈现,已经解压并完成分类,因此引擎直接对该对象本身进行匹配,而不是对隐藏在父文件内部的压缩片段进行匹配。 检测引擎接收到的正是其数据库所构建以识别的精确字节序列,此时它们便会发挥其一贯的强大性能。

在文件中查看

最直观的证明方式就是一个能够通过扫描检测却仍携带有效载荷的文件。我们创建了一个概念验证样本,将恶意有效载荷隐藏在看似无害的PDF文件中。随后,该样本被提交至一系列反恶意软件引擎进行检测,结果均显示为“干净”。

下一步,我们在启用“文件结构验证”功能的MetaDefender Core™中扫描该文件。在提取父文件的嵌套组件后,“文件结构验证”功能会将输出对象发送至下游引擎进行进一步分析。

文件结构验证输出:提取的对象树,其中每个组件均已分类,且有效载荷以独立对象的形式呈现。

Metascan™Multiscanning 反恶意软件引擎报告了“已感染”的判定结果。那些此前报告未检测到威胁的相同签名数据库,在有效载荷以独立文件形式呈现时,却报告了感染情况。

每个对象都会获得独立的判定结果,从而生成一份可追溯的记录,记录了文件中的内容以及文件各部分的处理情况。

从哪里开始

“干净扫描”是指引擎能够解析的内容。文件中是否包含危险内容则是另一个问题,而解决这个问题是一个结构性问题,必须在首个检测引擎运行之前予以解决。

是单独进行文件结构验证,还是将其与数据净化和动态分析结合使用,这取决于您的文件类型、工作流程以及完整性要求。欢迎与我们联系,探讨哪种组合最适合您的环境。

通过OPSWAT 了解最新信息!

立即注册,即可收到公司的最新动态、 故事、活动信息等。