CWE

常见的弱点枚举

一个由社区开发的软件&硬件缺陷类型的列表

2021 CWE最重要的硬件的弱点
CWE最危险的弱点
>CWE列表> CWE -个人字典定义(4.10)
ID

cwe - 176: Unicode编码的处理不当

弱点ID: 176
抽象:变体
结构:简单的
视图定制的信息:
+描述
产品不妥善处理当输入包含Unicode编码。
+的关系
部分帮助此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
+相关的视图”研究概念”(cwe - 1000)
自然 类型 ID 的名字
ChildOf 类类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 172年 编码错误
+模式的介绍
部分帮助不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 请注意
实现
+适用的平台
部分帮助该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。

语言

类:不是特定于语言的患病率(待定)

+常见的后果
部分帮助这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 影响 可能性
完整性

技术的影响:意想不到的状态

+示范例子

示例1

Windows提供了MultiByteToWideChar (), WideCharToMultiByte (), UnicodeToBytes(),和BytesToUnicode之间()函数将任意多字节(通常是ANSI)字符串和Unicode宽字符字符串。尺寸参数中指定这些函数是不同的单位,(一个字节,另在字符)使用容易出错。

在一个多字节字符串,每个字符占用不同的字节数,因此这样的字符串的大小是最容易指定为一个字节的总数。然而,在Unicode字符总是一个固定大小,和字符串的长度通常是由它们所包含的字符数。错误地指定了错误的单位大小参数会导致缓冲区溢出。

下面的函数接受一个用户名指定为一个多字节字符串和一个指向结构的指针与信息用户信息和填充结构指定的用户。由于Windows身份验证使用Unicode为用户名,用户名的观点是首先从一个多字节字符串转换为Unicode字符串。

(坏的代码)
例如语言:C
空白getUserInfo (char *用户名,struct _USER_INFO_2信息){
WCHAR unicodeUser [UNLEN + 1];
MultiByteToWideChar (CP_ACP 0、用户名1 unicodeUser sizeof (unicodeUser));
NetUserGetInfo (NULL, unicodeUser 2 (LPBYTE *)信息);
}

这个函数不正确传递unicodeUser在字节而不是字符的大小。到MultiByteToWideChar()的调用可以因此写(UNLEN + 1) * sizeof (WCHAR)宽字符,或(UNLEN + 1) * sizeof (WCHAR) * sizeof (WCHAR)字节,unicodeUser数组,只有(UNLEN + 1) * sizeof (WCHAR)分配的字节数。

如果用户名字符串包含超过UNLEN字符,调用MultiByteToWideChar()将溢出缓冲区unicodeUser。

+观察到的例子
参考 描述
服务器允许远程攻击者读取文档的web根外,并可能执行任意命令,通过畸形的url包含Unicode编码字符。
服务器允许远程攻击者获得源代码的ASP文件通过一个URL和Unicode编码。
交互重叠误差。
+潜在的缓解措施

阶段:体系结构和设计

策略:输入验证

避免做决定基于名称的资源(例如文件)如果这些资源能替代名称。

实施阶段:

策略:输入验证

假设所有的输入是恶意的。使用一个“接受良好的“输入验证策略,即。,使用一个可接受的输入列表,严格遵守规范。拒绝任何不严格符合规范的输入,或将其转换为一些。

当执行输入验证,考虑所有可能相关的属性,包括长度,类型的输入,可接受的值的全系列,缺失或额外的输入,语法,一致性相关领域,符合业务规则。作为业务规则逻辑的一个例子,在语法上“船”可能是有效的,因为它只包含字母数字字符,但它不是有效的如果输入预计仅包含颜色,如“红”或“蓝色”。

不完全依赖寻找恶意或畸形的输入。这很可能错过至少有一个不受欢迎的输入,特别是如果代码的环境变化。这可以让攻击者有足够的空间绕过验证。然而,denylists可以用于检测潜在攻击或确定哪些输入是畸形的,应该直接驳回。

实施阶段:

策略:输入验证

输入应该解码和规范化应用程序当前的内部表示之前验证(cwe - 180)。确保应用程序不会解码输入两次相同(cwe - 174)。这些错误可以用来绕过allowlist验证方案通过引入危险的输入后检查。
+会员资格
部分帮助这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 类型 ID 的名字
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 747年 CERT C安全编码标准(2008)第14章-杂项(MSC)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 883年 CERT c++安全编码部分49 -杂项(MSC)
MemberOf 类别类别——CWE条目包含一组其他条目,共享一个共同的特点。 992年 SFP二级集群:错误的输入转换
+分类法映射
映射分类名称 节点ID 适合 映射节点名
千鸟 Unicode编码
CERT C安全编码 MSC10-C 字符编码- use UTF8相关问题
+引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。“字符集和Unicode”第八章,446页。1版。艾迪生卫斯理》2006。
+内容的历史
+提交
提交日期 提交者 组织
2006-07-19 千鸟
+修改
修改日期 修饰符 组织
2008-07-01 Eric Dalci Cigital
更新Potential_Mitigations Time_of_Introduction
2008-09-08 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2008-11-24 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2009-03-10 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-05-27 CWE内容团队 主教法冠
更新Demonstrative_Examples
2009-07-27 CWE内容团队 主教法冠
更新Potential_Mitigations
2010-12-13 CWE内容团队 主教法冠
更新后的名字
2011-03-29 CWE内容团队 主教法冠
更新Potential_Mitigations
2011-06-01 CWE内容团队 主教法冠
更新Common_Consequences
2011-06-27 CWE内容团队 主教法冠
更新Common_Consequences
2011-09-13 CWE内容团队 主教法冠
更新的关系,Taxonomy_Mappings
2012-05-11 CWE内容团队 主教法冠
更新Observed_Examples、引用关系
2012-10-30 CWE内容团队 主教法冠
更新Potential_Mitigations
2014-07-30 CWE内容团队 主教法冠
更新的关系
2017-11-08 CWE内容团队 主教法冠
更新Applicable_Platforms Taxonomy_Mappings
2020-02-24 CWE内容团队 主教法冠
更新Potential_Mitigations、人际关系
2020-06-25 CWE内容团队 主教法冠
更新Potential_Mitigations
2023-01-31 CWE内容团队 主教法冠
更新描述
+以前的条目名称
改变日期 以前的条目名称
2008-04-11 Unicode编码
2010-12-13 故障处理Unicode编码
更多的信息是可用的,请选择一个不同的过滤器。
页面最后更新:2023年1月31日