研讨会回顾|AI驱动的DevOps云端转型:Atlassian Cloud + AI 实战指南

400-666-7732

研讨会回顾

AI驱动的DevOps云端转型:Atlassian Cloud + AI 实战指南

不要害怕XXE漏洞:
了解它们的凶猛之处以及检测方法

来源:创实信息      作者:龙智      发布时间:2022-05-09

今天,XML 外部实体 (XXE) 漏洞仍然无处不在,尽管多年来针对这些漏洞提供保护的建议一直是安全标准的一个组成部分。在本篇文章中,我们将尝试揭开 XXE 漏洞的神秘面纱,并介绍我们为帮助您检测和预防它们而制定的规则。

概述

XML 实体是在 XML 文档的文档类型定义 (DOCTYPE) 中声明的。如果一个实体的值是从文档内部检索的,那么它就是内部的,如果它的值是一个URI,那么它就是外部的。当随后在 XML 文档中使用实体引用时,该引用被为其检索的值所取代。例如,以下 XML 文档通过 URI 从文件中检索 xxe 实体的值,然后将其内容嵌入到文档中:

处理 XML 文件的应用程序应小心将外部实体限制为授权的文件系统和网络资源,否则会为任意文件泄露和服务器端请求伪造 (SSRF) 攻击打开大门:

注意:实体可以是通用的,如上图,也可以是参数实体。两者之间的唯一区别是参数实体仅在 DTD 中定义和使用。

如何检测 XXE 漏洞?

用规则 S2755 来解救

为了帮助开发人员了解该主题,规则S2755中的 “XML 解析器不应容易受到 XXE 攻击”适用于 SonarLint、SonarCloud 和所有版本的 SonarQube 中的 C#、Java、JS/TS、Python、PHP 和 C/C++。

每当 XML 处理器配置错误时,即使它只解析受信任的 XML 文件,此规则也会引发问题。我们认为,控制和限制使用外部实体只有以下优势:

  • 出于性能原因:减少对外部资源的依赖是一种很好的做法。

  • 出于安全原因:很难保证受信任的 XML 文件没有被恶意第三方在某些地方或传输中篡改(如下所示)。

  • 一般来说:一旦您开始解析 XML 文件,就在项目中安全地配置 XML 解析器是有意义的,即使您认为它们是可信的。这样,如果 XML 解析器处理您无法控制的其他 XML 文件,您就不必再担心将来出现 XXE 漏洞的风险。

不相信吗?看看 S2755 在用不同编程语言编写的各种知名开源项目中,发现的一些实际且严重的漏洞:

  • 在之前的文章https://blog.sonarsource.com/wordpress-xxe-security-vulnerability中,我们谈到了最流行的 PHP CMS WordPress 5.7 (CVE-2021-29447) 中的 XXE 漏洞,当经过身份验证的用户上传媒体文件时:

  • pikepdf 2.9.2 (CVE-2021-29421) 中的 XXE 漏洞,这是一个用于操作 PDF 文件的 Python 库,当解析 PDF XMP 元数据(基于 XML)时:
  • WxJava 3.7.4.A 中的 XXE 漏洞,这是一个用于开发微信移动支付应用程序的 Java SDK:

  • 在解析来自合作伙伴漏洞扫描工具的 XML 文件时,流行的 Python 漏洞管理工具 DefectDojo 1.6.4 中的 XXE 漏洞:

  • Java XMPP 服务器 Openfire 中的 XXE 漏洞:

评估 S2755 问题的建议

在您自己的项目中评估 XXE 漏洞问题时,请记住以下几点:

  • 考虑最坏的情况,例如恶意系统用户操纵 XML 文件,或从中检索 XML 文件的受感染的合作伙伴应用程序。

  • 阅读您的 XML 处理器的文档,尤其是解析 XXE 的默认行为。

  • 众所周知,Office 文档、RSS、PDF、SOAP、SVG、XML-RPC、XMPP 等许多文件格式和技术部分基于 XML 标准,因此很难注意到通过解析这些文件,可能会出现XXE漏洞。因此,如果触发了规则 S2755,请不要感到惊讶,例如,在从 PDF 文件解析 XMP 元数据时。

概括

在这篇文章中,我们看到了用不同编程语言编写的流行和各种开源项目中的 XXE 漏洞示例。我解释了如何评估 XXE 漏洞问题以及规则 S2755 的好处是什么,但只有您可以防止漏洞,所以下次我们将讨论如何修复它们。

作者简介:

ERIC THEROND
安全研究人员 

本文转载自 创实信息

最新文章

相关产品

分享到:
关于龙智

龙智DevSecOps解决方案

龙智深耕DevSecOps相关领域近十年,集成DevOps、ITSM、Agile管理思路及该领域的优秀工具,提供软件研发生命周期管理解决方案,以及实施、培训、升级、数据迁移、定制开发、运维等服务。

龙智致力于帮助企业实现软件开发运营一体化,并确保安全防护融入软件研发的整个生命周期中。龙智提供从产品规划与需求管理、开发,到测试、部署以及运维全生命周期的解决方案与管理工具,帮助企业科学、高效、安全地管理软件开发,更快、更好地交付软件产品。

近年来,龙智团队潜心开发,先后帮助金融、通信、互联网、汽车、芯片、游戏、医疗等行业的1000多家企业促进开发安全运营的一体化的实践。 秉承着打造开放式DevSecOps的理念,龙智与国外其他多家DevOps工具顶级厂商如Atlassian、Perforce、Mend(原WhiteSource)、CloudBees、SmartBear等合作,将国际市场上先进的工具引入中国市场,帮助企业打造量身定制的DevSecOps解决方案、ITSM解决方案,助力企业高效开发与运维。

我们的自研产品包括Confluence水印插件,Timewise-Jira计划及实际工时管理插件,Jira服务台企业微信应用插件等;我们还与全球DevOps领域领先的企业建立了合作伙伴关系,我们是:

· Atlassian全球白金合作伙伴

· Perforce中国授权合作伙伴

· Mend (原WhiteSource)中国授权合作伙伴

· CloudBees中国授权合作伙伴

· SmartBear中国授权合作伙伴