新闻动态
如何使用W-AVC检测CWE漏洞(II)
来源: | 作者:望安科技 | 发布时间: 428天前 | 775 次浏览 | 分享到:



本系列文章将对全球知名的安全漏洞数据库CWE(Common Weakness Enumeration)中C代码常见错误进行介绍,并示范如何使用望安C代码自动验证平台W-AVC对漏洞进行检测。


本篇将介绍在一个常见的内存安全问题,释放后引用(CWE-416)。栏目后续会逐步介绍内存越界、算术溢出、指针释放错误、数据竞争等漏洞的描述、示例和验证。


栏目往期回顾:

使用W-AVC检测CWE漏洞 —— 越界写入





 ○ CWE简介 ○

Introduction Of CWE



CWE(Common Weakness Enumeration,官方网站:https://cwe.mitre.org/index.html)是由MITRE公司主导的一个社区开发的常见软件和硬件弱点类型数据库。CWE的主要目标是针对开发人员和安全从业者社区,通过教育软件和硬件架构师、设计师、程序员和采购人员如何在产品交付之前消除最常见的错误,从源头上阻止漏洞的产生。使用CWE有助于防止一直困扰着软件和硬件行业并使企业处于风险之中的安全漏洞。

CWE帮助开发人员和安全从业者:

1

用通用语言描述和讨论软件和硬件弱点。

2

检查现有软件和硬件产品中的弱点。  

3

评估针对这些弱点的工具覆盖范围。

4

利用弱点识别、缓解和预防工作的

通用基线标准。

5

在部署之前预防软件和硬件漏洞。


目前CWE已收录了近1000个软硬件开发中的漏洞。许多代码安全分析工具使用CWE作为软硬件开发中漏洞分类,识别和描述的依据和建议。





 ○ CWE-416释放后引用 ○

     (Use  After  Free)



释放后引用漏洞是一种内存破坏漏洞,指释放内存后引用该内存。触发漏洞在于“重引用”这一步,通过该漏洞可以导致意外的代码执行、崩溃或数据损坏。

以下代码是一个释放后引用的简单示例


W-AVC对释放后引用的识别

下面的这段C代码是释放后引用的样例。

在这段代码中,第14行已经对指针buf2R1进行释放,而第17行strcpy函数中引用了已经释放的指针buf2R1,从而造成释放后引用漏洞。

现在我们将利用W-AVC平台,对上述代码的安全问题进行检查。在W-AVC中,我们编写如下基准文件:

这份基准文件中声明了函数的入参,并对指针user_supplied_string 做了一个预设。在得到的报告中,我们得到了3个错误。其中错误2指向解引用了已经释放过的指针,即指针发生了UAF。

查看详情后,可以看到W-AVC构造的具体反例

在这个样例中,验证器检测到已经被释放的指针被在strncpy函数中被再次引用,即程序中存在空指针解引用错误。

利用这份报告,开发测试人员可以很快定位到漏洞所在位置和具体问题,更高效、更安全地保障代码正确性。




 ○ W-AVC介绍 ○

(Introduction Of W-AVC)



望安C代码自动验证平台W-AVC是由望安科技研发的C语⾔代码程序的形式化验证云平台。平台基于形式化验证技术,通过数学证明排查代码中的缺陷和安全隐患 ;同时通过开发验证⼈员编写的规约基准代码,⾃动检查代码中的安全漏洞,从而在开发流程的早期增强系统的安全性,减少现代⼤型软件架构带来的⻛险。

申请试用:

登陆w-avc.wonsec.com,申请免费试⽤。



END






NEWS