代码缺陷解读——不受控制的资源消耗及表达式永假永真
什么是不受控制的资源消耗缺陷漏洞?它又能带来哪些严重后果?让我们一起往下看。
不受控制的资源消耗缺陷漏洞
一、什么是不受控制的资源消耗缺陷?
软件无法正确控制有限资源的分配和维护,从而使参与者无法影响所消耗的资源量,最终导致可用资源的耗尽。有限的资源包括内存,文件系统存储,数据库连接池条目和CPU。
如果攻击者可以触发这些有限资源的分配,但是资源的数量或大小不受控制,则攻击者可能会导致拒绝服务,从而消耗所有可用资源。这将阻止有效用户访问该软件,并且可能对周围环境产生影响。
例如,循环内字符串拼接是不受控制的资源消耗缺陷中的一个子类。
二、不受控制的资源消耗缺陷的构成条件有哪些?
1、缺少分配资源数量的限制;
2、在到达关闭阶段之前,将丢失对资源的所有引用;
3、处理后不关闭/返回资源。
三、不受控制的资源消耗缺陷会造成哪些后果?
资源耗尽的最常见结果是拒绝服务。该软件可能会变慢,由于未处理的错误而崩溃或将合法用户锁定。在某些情况下,有可能在资源耗尽的情况下强制软件“无法打开”。然后,软件的状态(可能还有安全功能)可能会受到威胁。
四、不受控制的资源消耗缺陷的防范和修补方法有哪些?
将节流机制设计到系统体系结构中。最好的保护措施是限制未经授权的用户可能导致消耗的资源量。强大的身份验证和访问控制模型将首先帮助防止此类攻击的发生。应尽可能保护登录应用程序免受DoS攻击。限制数据库访问(可能通过缓存结果集)可以帮助最大程度地减少消耗的资源。为了进一步限制发生DoS攻击的可能性,请考虑跟踪从用户收到的请求的速率,并阻止超出定义的速率阈值的请求。
五、不受控制的资源消耗缺陷样例:
用Wukong软件检测上述程序代码,则可以发现代码中存在着“不受控制的资源消耗” 导致的代码缺陷,如下图:
不受控制的资源消耗缺陷在CWE中被编号为CWE-400:Uncontrolled Resource Consumption
表达式永假/永真缺陷缺陷漏洞
一、什么是表达式永假/永真缺陷?
如果布尔表达式不改变程序逻辑,则完全没有必要,并且可以将其删除。如果执行逻辑与程序员的意图不匹配,这就是一个错误,布尔表达式应该被修复。
二、表达式永假/永真缺陷的构成条件有哪些?
该软件包含一个始终为假或为真的表达式。
三、表达式永假/永真缺陷的构成会造成哪些后果?
无效代码可能会在代码维护期间引起问题,并可能引入漏洞。
四、表达式永假/永真缺陷的防范和修补方法有哪些?
布尔表达式应该有改变其值的操作。
使用静态分析工具发现这种情况。
五、表达式永假/永真缺陷样例:
用Wukong软件检测上述程序代码,则可以发现代码中存在着“表达式永假/永真” 导致的代码缺陷,如下图:
表达式永假/永真缺陷在CWE中被编号为CWE-570:Expression is Always False