CWE-123:写入什么条件
查看自定义信息:
![]() ![]()
![]() ![]()
![]() ![]()
![]() ![]()
![]() 语言 C(不确定的患病率) C ++(不确定的患病率) ![]()
示例1 当记忆分配的会计信息以特定方式覆盖时,会发生写入条件的经典示例。这是潜在脆弱代码的示例:
(不良代码)
示例语言:C
#define bufsize 256
int main(int argc,char ** argv){
char *buf1 =(char *)malloc(bufsize); }char *buf2 =(char *)malloc(bufsize); strcpy(buf1,argv [1]); 免费(buf2); 在这种情况下,漏洞取决于内存布局。可以使用strcpy()的调用来编写BUF1的末尾,并且,使用典型的布局,可以覆盖系统分配时系统保留的会计信息。请注意,如果可以覆盖BUF2的分配标题,则BUF2本身也可以被覆盖。 分配标题通常将保留链接的内存列表“块”。特别是,可能有一个“以前的”块和一个“下一个”块。在这里,BUF2的先前块可能是BUF1,下一个块可能是无效的。当出现Free()时,大多数内存分配器将使用BUF2的数据重写链接列表。特别是,将更新BUF1的“下一个”块,并将更新任何后续块的“上一个”块。攻击者可以插入“下一个”块的内存地址,并为“上一个”块的记忆地址写入该值。 这可以用来覆盖稍后将重新引入的功能指针,并用攻击者可以合法访问的内存地址替换了它,它们放置了恶意代码,从而导致任意代码执行。 ![]()
提供更多信息 - 请选择其他过滤器。
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款。CWE由美国国土安全部(DHS)网络安全和基础设施安全局(CISA),由国土安全系统工程和开发研究所(HSSEDI)由manbetx客户端首页(MITER)。版权所有©2006–2023,Miter Comanbetx客户端首页rporation。CWE,CWSS,CWRAF和CWE徽标是Miter Corporation的商标。manbetx客户端首页 |