CWE-467:在指针类型上使用sizeof()
查看自定义信息:
该表显示了与这种弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
与观点“研究概念”相关(CWE-1000)
与“软件开发”视图相关(CWE-699)
该清单显示可能出现给定弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。
语言 C(不确定的患病率) C ++(不确定的患病率)
该表指定与弱点相关的不同个人后果。范围识别违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。可能性提供了有关与列表中其他后果相对于其他后果的预期可能看到的可能性的信息。例如,可能有可能利用弱点来实现一定的影响,但是利用它以实现不同的影响的可能性很小。
示例1 应注意确保大小返回数据结构本身的大小,而不是指向数据结构的指针的大小。 在此示例中,sizeof(foo)返回指针的大小。
(不良代码)
示例语言:C
double *foo;
... foo =(double *)malloc(sizeof(foo)); 在此示例中,sizeof(*foo)返回数据结构的大小,而不是指针的大小。
(好代码)
示例语言:C
double *foo;
... foo =(double *)malloc(sizeof( *foo)); 示例2 此示例定义了固定的用户名和密码。AuthenticateUser()函数旨在接受不受信任的用户的用户名和密码,并检查以确保其与用户名和密码匹配。如果用户名和密码匹配,则AuthenticateUser()旨在表明身份验证成功。
(不良代码)
/* 忽略CWE-259(硬编码密码)和CWE-309(使用密码系统进行身份验证)在此示例中。*/ char *用户名=“ admin”; char *pass =“密码”; int authenticateuser(char *inuser,char *in pass){
printf(“ sizeof用户名=%d \ n”,sizeof(用户名));
printf(“ sizeof pass =%d \ n”,sizeof(pass)); if(strncmp(用户名,inuser,sizeof(用户名))){
printf(“使用sizeof \ n的用户名的身份失败”); }返回(auth_fail); /* 因为CWE-467,大小在许多平台和架构上返回4个。*/ 如果(!strncmp(Pass,intass,sizeof(pass))){
printf(“使用sizeof \ n的auth成功密码”); }返回(auth_success); 别的 {
printf(“使用sizeof \ n的auth失败密码”); }返回(auth_fail); int main(int argc,char ** argv) {
int authresult;
if(argc <3){
ExitError(“用法:提供用户名和密码”); }authResult = authenticateUser(argv [1],argv [2]); 如果(authresult!= auth_success){
ExitError(“身份验证失败”); }别的 {
doAuthenticatedTask(argv [1]); }在AuthenTicateUser()中,因为SizeOf()应用于具有数组类型的参数,因此SizeOf()调用可能在许多现代体系结构上返回4。结果,strncmp()调用仅检查输入密码的前四个字符,从而进行部分比较(CWE-187),导致身份验证不当(CWE-287)。 由于部分比较,这些密码中的任何一个仍将导致“ admin”用户成功的身份验证:
(攻击代码)
Pass5
Passabcdefgh 密码 因为只检查了4个字符,所以这大大减少了攻击者的搜索空间,使蛮力攻击更可行。 同样的问题也适用于用户名,因此“ AdminXyz”和“ Administrator”之类的值将为用户名取得成功。
此成员关系表显示了其他CWE类别和视图,将这种弱点作为成员。这些信息通常可用于理解弱点适合外部信息源的何处。
提供更多信息 - 请选择其他过滤器。
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款。CWE由美国国土安全部(DHS)网络安全和基础设施安全局(CISA),由国土安全系统工程和开发研究所(HSSEDI)由manbetx客户端首页(MITER)。版权所有©2006–2023,Miter Comanbetx客户端首页rporation。CWE,CWSS,CWRAF和CWE徽标是Miter Corporation的商标。manbetx客户端首页 |