新CAPEC吗?从这里开始
>CAPEC列表> capec - 80:使用utf - 8编码绕过验证逻辑(版本3.9)

capec - 80:使用utf - 8编码绕过验证逻辑

攻击模式ID: 80
抽象:详细的
视图定制的信息:
+描述
这种攻击利用的是一个特定变体替代编码绕过验证逻辑。这种攻击利用的可能性在utf - 8编码潜在有害的输入和提交给应用程序不期望或有效地验证这个编码标准输入过滤困难。utf - 8(8位UCS / Unicode转换格式)是一种变长为Unicode字符编码。法律utf - 8字符是一个四个字节长。然而,早期版本的utf - 8规格弄错了一些条目(在某些情况下,它允许太长的字符)。utf - 8编码器应该使用“最短”编码,但天真的解码器可以接受超过必要的编码。根据RFC 3629,一个特别微妙的这种攻击形式可以针对一个解析器执行强调安全的有效性检查对utf - 8编码的输入形式,但解释某些非法八隅体作为字符序列。
+攻击的可能性

+典型的严重性

+的关系
部分帮助此表显示了其他的攻击模式和高水平类别相关的这种攻击模式。这些关系被定义为ChildOf ParentOf,给类似的项目可能存在的洞察力在较高和较低的抽象级别。此外,关系如光束,PeerOf, CanAlsoBe定义显示类似的攻击模式,用户可能想要探索。
自然 类型 ID 的名字
ChildOf 标准的攻击模式标准的攻击模式-一个标准的级别CAPEC中攻击模式是集中在一个特定的方法或技术用于攻击。它通常被视为一个单一的完全执行攻击。标准的攻击模式是为了提供足够的细节来理解特定的技术,以及它如何试图完成预期的目标。标准水平的攻击模式是一种特定类型的一个更抽象的元级别的攻击模式。 267年 利用不同的编码
PeerOf 详细的攻击模式详细的攻击模式-一个详细级别攻击模式CAPEC提供了一个低水平的细节,通常利用一个特定的技术和针对特定的技术,并表达一个完整的执行流程。详细的攻击模式比元更具体的攻击模式和标准的攻击模式,通常需要一个特定的保护机制来减轻实际攻击。详细的级别攻击模式通常会利用许多不同的标准水平攻击模式链接在一起来完成一个目标。 64年 使用斜杠和URL编码结合绕过验证逻辑
PeerOf 详细的攻击模式详细的攻击模式-一个详细级别攻击模式CAPEC提供了一个低水平的细节,通常利用一个特定的技术和针对特定的技术,并表达一个完整的执行流程。详细的攻击模式比元更具体的攻击模式和标准的攻击模式,通常需要一个特定的保护机制来减轻实际攻击。详细的级别攻击模式通常会利用许多不同的标准水平攻击模式链接在一起来完成一个目标。 71年 使用Unicode编码绕过验证逻辑
部分帮助此表显示了这种攻击模式的观点属于和顶级类别内的这一观点。
+执行流程
探索
  1. 调查申请用户可控的输入:使用浏览器或一个自动化工具,攻击者遵循所有公共和行动在一个网站的链接。他们记录所有的链接、表单、资源访问web应用程序和所有其他可能的切入点之一。

    技术
    使用搜索工具跟踪和记录所有的链接和分析网页找到入口点。特别注意任何链接,包括参数的URL。
    使用一个代理工具来记录所有用户输入入口点在手工遍历web应用程序的访问。
    网站使用浏览器手动探索和分析它是如何构建的。许多浏览器的插件可以促进分析或自动发现。
实验
  1. 探针的入口点来定位漏洞:攻击者使用入口点聚集在“探索”阶段作为目标列表和注入各种utf - 8编码的有效载荷可以确定一个入口点实际上代表一个漏洞验证逻辑和描述不足的程度可以利用的漏洞。

    技术
    在脚本中尝试使用utf - 8编码的内容为了绕过验证例程。
    尝试使用utf - 8编码的内容在HTML中为了绕过验证例程。
    尝试使用utf - 8编码的内容在CSS中为了绕过验证例程。
+先决条件
应用程序的utf - 8解码器接收和解释非法utf - 8字符或不在utf - 8编码的格式。
输入过滤和验证做得不恰当敞开了大门有害字符目标主机。
+技能要求
(等级:低)
攻击者可以注入不同的过滤字符以utf - 8格式表示。
(级别:中等)
攻击者可能工艺微妙的编码输入数据通过使用知识,他们对目标主机收集。
+指标
一个web页面,其中包含过于长utf - 8编码构成协议异常,并可能表明攻击者正试图利用目标主机上的一个漏洞。
攻击者可以使用fuzzer为了调查一个utf - 8编码漏洞。fuzzer应该生成可疑的网络活动明显的入侵检测系统。
一个id过滤网络流量可以检测非法utf - 8字符。
+后果
部分帮助这个表指定不同的个体与攻击模式相关的后果。范围确定违反了安全属性,而影响了负面的技术影响,如果敌人成功的攻击。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能有高可能性模式将被用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
保密
访问控制
授权
旁路保护机制
保密
完整性
可用性
执行未经授权的命令
完整性
修改数据
可用性
不可靠的执行
+缓解措施
Unicode协会认可的多个表示问题,并修订Unicode标准做出相同的多个表示与utf - 8代码点是非法的。utf - 8正误表列出了新限制utf - 8的范围(见参考资料)。目前很多应用程序可能没有修订遵循这条规则。验证您的应用程序符合最新的utf - 8编码规范。额外的关注非法字符的过滤。

所需的确切响应从一个utf - 8解码器无效输入不一致定义的标准。一般来说,有几种方法utf - 8解码器可能表现在一个无效的字节序列的事件:

  • 1。插入一个替换字符(如。”?’”)。
  • 2。忽略了字节。
  • 3所示。根据不同解释字节字符编码(通常是iso - 8859 - 1字符地图)。
  • 4所示。没有注意到和解码的字节是一些类似的utf - 8。
  • 5。停止解码并报告一个错误(可能继续给调用者)。

一个译码器有可能以不同的方式表现为不同类型的无效输入。

RFC 3629只要求utf - 8解码器不能解码“太长的序列”(在多字节字符编码比需要的地方,但仍坚持上面的形式)。Unicode标准需要看到,解码器”……对待任何不规范的代码单元序列作为一个错误条件。这可以保证它将既不理解也不发出一个不规范的代码单元序列。”

太长的形式是最麻烦的utf - 8数据类型之一。当前RFC说他们不能解码,但老规格utf - 8只给了一个警告,许多简单的解码器将愉快地解码它们。太长的形式被用来绕过安全验证高调产品,包括微软的IIS web服务器。因此,必须非常小心避免安全问题如果从utf - 8验证之前执行转换,和通常更简单的处理太长的形式输入验证之前就完成了。

维护安全无效输入的情况下,有两个选项。第一个是解码utf - 8之前做任何输入验证检查。第二是使用一个解码器,如果无效输入,返回一个错误或文本应用程序认为是无害的。另一个可能性是完全避免转换的utf - 8,但这依赖于任何其他软件的数据传递给安全处理无效数据。

另一个考虑是错误恢复。保证正确的复苏后腐败或丢失字节,解码器必须能够认识到铅和小道字节之间的区别,而不是假设字节类型允许的将他们的立场。

出于安全原因,utf - 8解码器不能接受utf - 8序列的时间比必要的字符编码。如果你使用一个解析器以utf - 8编码解码,确保解析器过滤无效的utf - 8字符(无效的形式或太长的形式)。
寻找太长的utf - 8序列从恶意模式。您还可以使用utf - 8编码译码器压力测试来测试您的utf - 8解析器(见马库斯·库恩的utf - 8和Unicode FAQ引用部分)
假设所有的输入是恶意的。创建一个定义所有有效allowlist输入软件系统根据需求规格说明书。输入不匹配allowlist不应被允许进入系统。测试你对恶意输入解码过程。
+例子,实例

也许最著名的utf - 8的攻击是针对应用补丁的Microsoft Internet Information Server (IIS) 4和5 IIS服务器。如果攻击者制造这样的请求

http://servername/scripts/..%c0%af.。/ winnt / system32系统/用于cmd . exe

服务器没有正确处理% c0%af URL。你认为% c0%af意味着什么吗?11000000 10101111的二进制;如果是拆分使用utf - 8的映射规则,我们得到了这个:11000000 10101111。因此,人物是00000101111,或者0 x2f,反斜杠(/)字符!% c0%af是无效/字符的utf - 8表示。这样一个无效的utf - 8逃避通常被称为一个太长的序列。

所以当攻击者请求URL,污染他们访问

http://servername/scripts/../../winnt/system32/cmd.exe

换句话说,他们走出了脚本的虚拟目录,这是标记允许程序执行,根和下到system32系统目录中,在那里他们可以通过命令来命令shell,用于cmd . exe。

参见:cve - 2000 - 0884
+分类法映射
部分帮助CAPEC映射ATT&CK技术利用一个继承模型简化和减少直接CAPEC / ATT&CK映射。继承的映射表示文本说明父CAPEC有相关ATT&CK映射。注意,ATT&CK企业框架不使用一个继承模型的一部分映射到CAPEC。
(见相关ATT&CK分类法映射)
+引用
[REF-1] g·霍格伦德和g·麦格劳。“利用软件:如何打破代码”。addison - wesley。2004 - 02。
[ref - 112]大卫·惠勒。“安全编程Linux和Unix HOWTO”。5.9。字符编码。<http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/character-encoding.html>。
[ref - 530]大卫迈克尔·霍华德和勒布朗。编写安全代码。第十二章。微软出版社。
Bruce Schneier (ref - 531)。“Unicode的安全风险”。Crypto-Gram通万博下载包讯。2000-07-15。<https://www.schneier.com/crypto-gram/archives/2000/0715.html>。
[ref - 532]“维基百科”。utf - 8。维基媒体基金会有限公司<http://en.wikipedia.org/wiki/UTF-8>。
ref - 533 f . Yergeau。“RFC 3629——utf - 8, ISO 10646的转换格式”。2003 - 11。<http://www.faqs.org/rfcs/rfc3629.html>。
(ref - 114)埃里克黑客。“与Unicode IDS逃税”。2001-01-03。<http://www.securityfocus.com/infocus/1232>。
[ref - 535]“勘误表# 1:utf - 8最短的形式”。Unicode标准。Unicode公司. .2001 - 03。<http://www.unicode.org/versions/corrigendum1.html>。
马库斯·库恩(ref - 525)。“Unix / Linux的Unicode utf - 8和常见问题解答”。1999-06-04。<http://www.cl.cam.ac.uk/ ~ mgk25 / unicode.html>。
马库斯·库恩(ref - 537)。“utf - 8编码译码器功能和压力测试”。2003-02-19。<http://www.cl.cam.ac.uk/%7Emgk25/ucs/examples/UTF-8-test.txt>。
+内容的历史
提交
提交日期 提交者 组织
2014-06-23
(版本2.6)
CAPEC内容团队 manbetx客户端首页
修改
修改日期 修饰符 组织
2018-07-31
(版本2.12)
CAPEC内容团队 manbetx客户端首页
更新的引用
2020-07-30
(版本3.3)
CAPEC内容团队 manbetx客户端首页
更新Example_Instances Execution_Flow,移植,Skills_Required
2021-06-24
(版本3.5)
CAPEC内容团队 manbetx客户端首页
更新Related_Weaknesses
2022-09-29
(版本3.8)
CAPEC内容团队 manbetx客户端首页
应对Example_Instances更新,
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新或审查:2021年10月21日