源代码安全扫描及服务技术方案.ppt
上传人:猫巷****熙柔 上传时间:2024-09-10 格式:PPT 页数:37 大小:4.3MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

源代码安全扫描及服务技术方案.ppt

源代码安全扫描及服务技术方案.ppt

预览

免费试读已结束,剩余 27 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

源代码安全扫描及审计服务——方案报告2012年08月汇报提纲项目背景——源代码安全扫描及服务项目项目效益源码扫描在NGBOSS的应用汇报提纲扫描内容下面对在源代码扫描中的缺陷类型选取几例常见的加以说明缺陷类型:内存管理问题子错误代码:MLK.MIGHT-可能存在的内存泄漏可能存在的内存泄漏(类似的代码错误MLK.MUST-已经存在内存泄漏),这个报告并非一定存在内存泄漏,提示在源码中存在此类风险.摘取的代码实例如下:源码:G:\c++\report\report3\tasks\ftpfile\00128_FixFeeCompoGd.cpp行115错误描述:Possiblememoryleak.Dynamicmemorystoredin'loadInfo'allocatedthroughfunction'new'atline111canbelostatline115分析:为loadInfo分配的内存可能在115行的代码中发生泄漏,需要对调用的代码增加验证条件缺陷类型:数组越界子错误代码:ABR-数组越界此类错误多发生在堆,栈和数据段中,但报出来的一般都是缺陷。摘取的实例如下:源码:G:\c++\bizlib\control\ccm\CM_COM_MngSubs.cpp,行623接口:Initialize错误描述:Bufferoverflow,arrayindexof'subsproperty.enum_'maybeoutofbounds.Array'subsproperty.enum_'ofsize21mayuseindexvalue(s)0..32分析:Array'subsproperty.enum_'sizeis21定义的长度是21,但在实际调用的过程有可能会访问到32的数据,这就超出了定义的长度范围了.缺陷类型:空指针引用子错误代码:NPD.CHECK.MIGHT-空指针引用指针在NULL检查后可能被取消引用,同类型的错误代码还有NPD.CHECK.MUST摘取的代码实例如下:源码:G:\c++\report\prvcode\lazydev\hpp\FileOperator.hpp行510错误描述:Pointer'destfname'checkedforNULLatline503maybedereferencedatline510.分析:指针'destfname'将会在NULL值检查后被解引用.扫描内容安全漏洞检测:确信软件安全性是软件质量中一个重要的、并越来越受重视的方面。同样的,所有的安全漏洞分析是基于市场领先的缺陷检测能力。从原来的缺陷检测分离出来单独的安全漏洞检测和违反推荐的安全代码最佳实践的缺陷检测。能够检测到的安全漏洞类型举例(详细参见下表)安全漏洞错误代码:下面将列出安全漏洞中的错误代码及描述以供参考安全漏洞错误代码:下面将列出安全漏洞中的错误代码及描述以供参考下面对在源代码扫描中的安全漏洞选取几例常见的错误进行说明安全漏洞类型:缓冲区溢出子错误代码:ABV.TAINTED-缓冲区溢出缓冲区溢出中的一个子类报错信息-未经验证的输入缓冲区溢出,即形参超出了本身定义的范围上限摘取的实例如下:源码:G:\c++\bizlib\view\HServer.cpp,行71错误描述:Bufferoverflowfromunvalidatedinputusedasanarrayindexof'sconname'whichmaybeoutofbounds.Array'sconname'ofsize50mayuseindexvalue(s)0..SHRT_MAX-1分析:形参sconname超出了定义的范围长度安全漏洞类型:未经验证的用户输入子错误代码:SV.TAINTED.ALLOC_SIZE-未经验证的输入摘取的实例如下:源码:G:\c++\i\bank\bankother\bankhz.cpp行353错误描述:Unvalidatedintegervalue'lGetLen'isreceivedfromanexternalfunctionthroughacallto'atol'atline344whichcanbeusedtoaltermemoryallocationsizethroughcallto'ReadBufs'atline353.Useofunvalidatedinputformemoryallocationcanleadtoadenialofservicecondition.Checkintegersforreasonablelimits.分析:由于这里在分配内存时调用了一个外部函数,但此外部函数中并没有明确整形变量lGetLen的