cwe - 193:错误
视图定制的信息:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的代码分配内存的最大数量的小部件。然后获得指定数量的小部件,确保用户不要求太多。然后初始化数组的元素使用InitializeWidget ()。因为小部件的数量可以为每个请求不同,插入一个空指针的代码意味着最后一个部件的位置。
(坏的代码)
例如语言:C
int我;
unsigned int numWidgets; 小部件* * WidgetList; numWidgets = GetUntrustedSizeValue (); 如果((numWidgets = = 0) | | (numWidgets > MAX_NUM_WIDGETS)) {
ExitError(“不正确的请求数量的小部件!”); }WidgetList =(小部件* *)malloc (numWidgets * sizeof(小部件*)); printf (" WidgetList ptr = % p \ n ", WidgetList); (我= 0;我< numWidgets;我+ +){
WidgetList[我]= InitializeWidget (); }WidgetList [numWidgets] =零; showWidgets (WidgetList); 然而,这段代码包含一个这些计算错误(-cwe - 193)。它分配足够的空间来包含指定数量的部件,但不包括空指针的空间。因此,分配缓冲区比它应该是(小cwe - 131)。如果用户请求MAX_NUM_WIDGETS,有一个界外写(cwe - 787当零分配。根据环境和编译设置,这可能会导致内存泄露。 示例2 在本例中,代码不考虑终止null字符,并写一个字节缓冲区的末尾。 第一次调用strncat()附加到20个字符加上终止null字符fullname []。有足够的空间分配,而且没有弱点与第一个电话。然而,第二个调用strncat()可能会附加一个20个字符。不考虑终止null字符的代码由strncat自动添加()。这个终止null字符将被写入一个字节之外的最后fullname[]缓冲区。因此存在一个错误与第二strncat()调用,作为第三个参数应该19。
(坏的代码)
例如语言:C
char firstname [20];
char lastname [20]; char fullname [40]; fullname [0] = ' \ 0 '; strncat (fullname firstname 20); strncat(全名、lastname、20); 当使用一个函数像strncat()必须离开最后一个免费的字节缓冲区的终止null字符,这样就避免了这些弱点。-此外,strncat()的最后一个参数是附加的字符数,必须小于剩余空间的缓冲区。小心不要只使用缓冲区的总大小。
(好的代码)
例如语言:C
char firstname [20];
char lastname [20]; char fullname [40]; fullname [0] = ' \ 0 '; strncat (fullname, firstname, sizeof (fullname) strlen (fullname) 1); strncat (fullname, lastname, sizeof (fullname) strlen (fullname) 1); 示例3 错误也可以体现在阅读字符的字符数组一个for循环中有一个错误的延续状况。
(坏的代码)
例如语言:C
#定义PATH_SIZE 60
字符的文件名(PATH_SIZE); (我= 0;我< = PATH_SIZE;我+ +){
字符c = getc ();
如果(c = = EOF) {
文件名(我)= ' \ 0 '; }文件名[我]= getc (); 在这种情况下,正确的延续状况如下所示。
(好的代码)
例如语言:C
(我= 0;我< PATH_SIZE;我+ +){
… 示例4 另一个例子的错误可以发生在使用sprintf库函数将一个字符串变量复制到一个格式化的字符串变量和原始字符串变量来自不受信任的来源。在接下来的例子中,本地函数,setFilename用于存储数据库文件名的价值但首先使用sprintf文件名格式。setFilename函数包含一个输入参数与文件的名称用作复制源sprintf函数。sprintf函数将复制文件名字符数组的大小20和指定的格式新变量16字符文件扩展名.dat紧随其后。
(坏的代码)
例如语言:C
int setFilename (char *文件名){
char[20]名称; }sprintf(名称,“% 16 s。dat”,文件名); int成功= saveFormattedFilenameToDB(名称); 返回成功; 然而这将导致一个错误如果原始文件名就是16字符或更大,因为16字符的格式与文件扩展名是20个字符并没有考虑所需零终结者将放置在结束的字符串。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
更多的信息是可用的,请选择一个不同的过滤器。
|
使用常见的弱点枚举(CWE)和相关的引用从这个网站的使用条款。CWE赞助的美国国土安全部(DHS)网络和基础设施安全机构(CISA)和管理的国土安全系统工程和发展研究所这是由(HSSEDI)manbetx客户端首页(斜方)。版权©2006 - 2023,斜方公司。manbetx客户端首页CWE、水煤浆、CWRAF, CWE标志是斜方公司的商标。manbetx客户端首页 |