CWE-14:编译器删除代码以清除缓冲区
查看自定义信息:
此编译器优化错误发生时发生:
该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
与观点“研究概念”相关(CWE-1000)
该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。
语言 C(不确定的患病率) C ++(不确定的患病率)
该表指定与弱点相关的不同个人后果。该范围确定了违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。其可能性提供了有关预期相对于列表中其他后果的特定后果的可能性的信息。例如,可能会利用弱点来实现一定的影响,但很可能会利用它来实现不同的影响。
示例1 以下代码读取用户的密码,使用密码连接到后端大型机,然后尝试使用memset()从内存中刷新密码。
(不良代码)
示例语言:C
void getdata(char *mfaddr){
char PWD [64];
if(getPasswordfromuser(pwd,sizeof(pwd))){ if(connectTomainFrame(MFADDR,PWD)){ //与大型机的互动 memset(pwd,0,sizeof(pwd)); 该示例中的代码将正确执行,如果使用逐字执行,但是如果使用优化编译器(例如Microsoft Visual C ++ .NET或GCC 3.X)编译了代码,则将删除到MEMSET()的呼叫()作为一个死商店是因为在覆盖其值后未使用缓冲区PWD [18]。由于缓冲区PWD包含一个敏感值,因此如果数据属于存储器居民,则应用程序可能很容易受到攻击。如果攻击者能够访问正确的内存区域,则可以使用恢复的密码来控制系统。 为了防止攻击者学习系统秘密,覆盖在内存中操纵的敏感数据是常见的做法。但是,随着优化编译器的出现,程序并不总是像单独的源代码所暗示的那样行事。在示例中,编译器将呼叫的呼叫解释为死亡代码,因为尽管显然有安全动机发生操作的安全动机,但随后未使用记忆。这里的问题在于,许多编译器以及实际上许多编程语言都没有考虑到提高效率的努力和其他安全问题。 攻击者通常通过使用核心转储或运行时机制来访问特定应用程序使用的内存并恢复秘密信息,从而利用这种类型的漏洞。攻击者可以访问秘密信息后,进一步利用系统并可能损害应用程序交互的其他资源是相对简单的。
此成员关系表显示了其他CWE类别和视图,将此弱点称为成员。该信息通常可用于理解弱点适合外部信息源的何处。
提供更多信息 - 请选择其他过滤器。
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款。CWE由美国国土安全部(DHS)网络安全和基础设施安全局(CISA),由国土安全系统工程和开发研究所(HSSEDI)由manbetx客户端首页(MITER)。版权所有©2006–2023,Miter Comanbetx客户端首页rporation。CWE,CWSS,CWRAF和CWE徽标是Miter Corporation的商标。manbetx客户端首页 |