首页
社区
课程
招聘
[翻译]XML Schema DTD和Entity攻击(一)
发表于: 2019-1-14 20:27 6474

[翻译]XML Schema DTD和Entity攻击(一)

2019-1-14 20:27
6474

——版本1.0

Timothy D. Morgan (@ecbftw) Omar Al Ibrahim (oalibrahim@vsecurity.com)

可扩展标记语言(XML)是在无数的软件项目中使用的一个非常普遍的技术。XML的核心特性是使用架构(schema)和文档类型定义(DTD)定义和验证文档结构。当使用不当时,这些文档的定义和验证功能的某些方面可能会导致使用XML的应用程序中出现安全漏洞。


本文档会提供有关这些攻击的最新参考资料, 并且列举出适用于最流行的XML解析器的所有已知技术,同时对一些新的攻击方式进行研究。


XML是一种非常流行的标记语言,在20世纪90年代后期首次标准化,并被无数软件项目采用。它用于配置文件,文档格式(如OOXML,ODF,PDF,RSS,...),图像格式(SVG,EXIF hears)和网络协议(WebDAV,CalDAV,XMLRPC,SOAP,XMPP,SAML, XACML,...)。这些例子仅仅触及表面。XML已经普遍到,任何影响XML的弱点或安全漏洞,无论多么微小,都可能对全世界的计算机系统产生严重影响,因为它所使用的环境的多样性和不可预测性。


XML设计中内置的某些功能,即内联架构和文档类型定义(DTD)是潜在安全问题众所周知的来源。尽管已经公开讨论了十多年,但很大一部分使用XML的软件仍然容易受到恶意DTD的攻击。正如人们所期望的那样,任何众所周知但又常见的漏洞类型,都源于这样一个事实,即开发社区内的整体意识仍然很低,而许多XML解析器的行为默认情况下是暴露有风险的特性。本文试图通过提供各种XML架构和DTD攻击的最新参考来解决这些问题。同时,我们希望这带来的任何额外认识将有助于鼓励XML库供应商的开发人员默认禁用最危险的功能,并改进API文档以减轻任何剩余风险。


标准通用标记语言(SGML)是一种用于为文档定义通用标记语言的iso标准技术。该标准(ISO 8879)于1986年推出,源自IBM的早期标记语言(GML),旨在描述文档及其元素的结构,而不考虑如何显示这些元素,因为外观特征可能根据解释器使用的输出媒体和样式首选项而变化。超文本标记语言(HTML)是基于sgml的语言的一个例子,它是用于创建web页面和其他可以在web浏览器中显示的信息的主要标记语言。


HTML用于定义格式化的文档,web浏览器可以将其呈现为可视或有声的web页面。可扩展标记语言(XML)用于定义一种标记语言,该语言为文档的编码规则设置了一种便于传输和存储数据的形式。W3C XML 1.0规范和其他免费开放标准中定义的XML可以看作是SGML的衍生品,与完整的SGML解析器相比,XML的目的是简化解析器的实现。随后,XML通过禁用许多SGML功能(例如支持嵌套子文档或未闭合的开始和结束标记)来支持参考语法的受限子集。由于其轻量级实现,XML目前不仅广泛用于表示文档,而且广泛用于表示web服务调用中的数据结构。因此,开发了许多应用程序编程接口(api)来帮助软件开发人员处理XML数据,并且存在一些模式系统来帮助定义基于XML的语言。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
手动赞
2019-1-22 14:03
0
游客
登录 | 注册 方可回帖
返回
//