cwe - 805:缓冲区长度值不正确的访问
视图定制的信息:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
相关的视图”方案及质量的措施(2020)”(CWE-1305)
相关的视图”方案及数据保护措施”(cwe - 1340)
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 C(通常是普遍的) c++(通常是普遍的) 类:装配患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 这个例子将IP地址从一个用户,验证它是完整的,然后查找主机名和拷贝到缓冲区。
(坏的代码)
例如语言:C
空白host_lookup (char * user_supplied_addr) {
struct hostent *惠普;
in_addr_t * addr; char主机名[64]; in_addr_t inet_addr (const char * cp); / *程序确保user_supplied_addr是正确的格式转换* / validate_addr_form (user_supplied_addr); addr = inet_addr (user_supplied_addr); 惠普= gethostbyaddr (addr, sizeof (struct in_addr) AF_INET); strcpy(主机名、hp - > h_name); 这个函数分配64字节的缓冲区来存储主机名假设主机名的最大长度值是64个字节,但是并不能保证主机名不能超过64字节。如果攻击者指定一个地址解析为一个非常大的主机名,那么该函数会覆盖敏感数据,甚至放弃攻击者的控制流。 注意,本例中还包含一个未检查返回值(cwe - 252)能导致一个空指针(cwe - 476)。 示例2 在下面的示例中,可以要求memcpy比假定移动更大的内存段:
(坏的代码)
例如语言:C
int returnChunkSize (void *) {
/ *如果块信息有效,返回可用内存的大小, *,返回1表示一个错误 * / … int main () {
… }memcpy (destBuf srcBuf (returnChunkSize (destBuf) 1)); … 如果returnChunkSize()碰巧遇到一个错误将返回1。注意,返回值不是之前检查memcpy操作(cwe - 2521),所以可以作为尺寸参数传递给memcpy () (cwe - 805)。因为memcpy()假设值是无符号,它将被视为MAXINT-1 (cwe - 195),因此将远比可能可用内存复制到目标缓冲区(cwe - 787,cwe - 788)。 示例3 在接下来的例子中,源字符串复制到桌子strncpy字符串使用方法。
(坏的代码)
例如语言:C
…
炭源[21]=“字符串”; char dest [12]; strncpy(桌子,来源,sizeof(源)1); … 然而,在调用strncpy源字符串中使用运算符调用来确定数量的字符复制。这将创建一个缓冲区溢出源字符串的大小大于字符串不在座位上。内的桌子应该使用字符串运算符调用,以确保正确的数量的字符复制,如下所示。
(好的代码)
例如语言:C
…
炭源[21]=“字符串”; char dest [12]; strncpy(桌子,来源,sizeof(桌子)1); … 示例4 在本例中,该方法outputFilenameToLog输出日志文件的文件名。方法参数包括一个指向字符串的指针包含文件名和整数字符串中的字符数。文件名是复制到缓冲缓冲区大小设置为输入日志文件的最大大小。方法然后调用另一个方法将缓冲区的内容保存到日志文件中。
(坏的代码)
例如语言:C
#定义LOG_INPUT_SIZE 40
/ /保存一个日志文件的文件名 int outputFilenameToLog (char *文件名,int长度){
int成功;
/ /缓冲区大小设置为输入日志文件的最大大小 字符缓冲区(LOG_INPUT_SIZE); / /将文件复制到缓冲区 strncpy (buf,文件名长度); / /保存到日志文件中 成功= saveToLogFile (buf); 返回成功; 然而,在这种情况下,字符串复制方法,strncpy,错误地使用方法参数长度来确定数量的字符复制,而不是使用本地字符串的大小,缓冲区。这可能导致缓冲区溢出如果字符串中包含的字符数指出通过文件名是大然后允许本地字符串的字符数。字符串复制方法应该使用缓冲区内的字符串运算符调用来确保只有字符缓冲区复制到数组的大小避免缓冲区溢出,如下所示。
(好的代码)
例如语言:C
…
/ /将文件复制到缓冲区 strncpy (buf,文件名,sizeof (buf) 1); …
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
更多的信息是可用的,请选择一个不同的过滤器。
|
使用常见的弱点枚举(CWE)和相关的引用从这个网站的使用条款。CWE赞助的美国国土安全部(DHS)网络和基础设施安全机构(CISA)和管理的国土安全系统工程和发展研究所这是由(HSSEDI)manbetx客户端首页(斜方)。版权©2006 - 2023,斜方公司。manbetx客户端首页CWE、水煤浆、CWRAF, CWE标志是斜方公司的商标。manbetx客户端首页 |