您好,欢迎访问三七文档
源代码安全扫描及审计服务——方案报告2012年05月2汇报提纲扫描内容2定价方案4服务介绍33背景介绍313项目背景——源代码安全扫描及服务项目随着市场竞争的日益激烈,以及通信与计算机技术的不断发展,业务支持系统的软件规模日益庞大,应用环境日益复杂,新业务需求层出不穷,旧业务不断更新优化;对系统源代码的质量要求权也越来越高.从提高系统的安全性及稳定性出发;由中国移动广东分公司牵头针对开发商(目前是针对华为,从兴)的源代码进行质量控制,保证源代码的质量;确保系统稳定,高效的运行行业现况•项目规模越来越庞大,业务复杂度越来越高•开发团队庞大,个人开发风格,水平不一致,导致开发出来的代码质量高低不一•对行业项目的安全要求越来越高,因此对项目的质量则越高•由此上三大因素,故引入代码扫描控制不利因素,提升质量引入背景背景介绍4项目优点源代码扫描是基于专利技术分析引擎开发的软件基础上实施综合应用了多种近年来最先进的静态分析技术是出色的软件静态分析软件是唯一集效率与速度为一身的强大而又精确的企业级源代码分析工具通过该项目开发人员在桌面端快速而准确的定位安全隐患识别错误和软件架构问题;通过项目分析软件研发经理可以直接看到软件代码和架构的安全性和可靠性视图,避免软件研发经理往往需要研读软件代码才能发现软件中的问题的弊端软件安全经理可以在软件开发生命周期中发现、评估、纠正和度量软件安全优点1优点25项目效益引进代码扫描项目之后当年的项目成本降低50%引进代码扫描项目之后项目成本缩减200000美金WehadaverytightscheduleandwithoutKlocworkInsight,wewouldhavehaddifficultymeetingourobjectivesontime.项目引进代码扫描项目之后项目成员减少900h/人的工作成本““JustinThomas,SoftwareTeamLead,JohnsHopkinsAPLC&C6汇报提纲扫描内容2定价方案4服务介绍33背景介绍317扫描内容1.缺陷检测2.安全漏洞检测3.软件架构分析4.软件度量分析5.可定制代码分析扫描核心内容简介除了提供一些核心的扫描内容外,还可与IDE集成使用;提高开发代码质量8扫描内容JAVA1.效率错误(如:空的finalize方法)2.可维护性问题(如:空的catch从句)3.可靠性问题(如资源泄漏)c/c++1.空指针释放2.内存管理问题(如内存泄漏)3.数组越界4.未初始化数据使用5.编码风格问题下面介绍下缺陷检测中的一些详细信息,支持不同语言的扫描;其中可以检测出180种Java的错误,220种C++错误,下面列举详细缺陷类型,其中每个缺陷类型下包含各类子错误9扫描内容下图是源代码扫描之后所生成的十大错误报告:总结了项目中最现个数最多的前十个错误,包括错误名称(这里为了直观将英文翻译成中文),出现次数及所占百分比10下面对在源代码扫描中的缺陷类型选取几例常见的加以说明缺陷类型:内存管理问题子错误代码:MLK.MIGHT-可能存在的内存泄漏可能存在的内存泄漏(类似的代码错误MLK.MUST-已经存在内存泄漏),这个报告并非一定存在内存泄漏,提示在源码中存在此类风险.摘取的代码实例如下:源码:G:\c++\report\report3\tasks\ftpfile\00128_FixFeeCompoGd.cpp行115错误描述:Possiblememoryleak.Dynamicmemorystoredin'loadInfo'allocatedthroughfunction'new'atline111canbelostatline115分析:为loadInfo分配的内存可能在115行的代码中发生泄漏,需要对调用的代码增加验证条件扫描内容11缺陷类型:数组越界子错误代码: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的数据,这就超出了定义的长度范围了.扫描内容12缺陷类型:空指针引用子错误代码:NPD.CHECK.MIGHT-空指针引用指针在NULL检查后可能被取消引用,同类型的错误代码还有NPD.CHECK.MUST摘取的代码实例如下:源码:G:\c++\report\prvcode\lazydev\hpp\FileOperator.hpp行510错误描述:Pointer'destfname'checkedforNULLatline503maybedereferencedatline510.分析:指针'destfname'将会在NULL值检查后被解引用.导致内存泄漏.扫描内容13扫描内容●在源代码扫描项目中可以提供对缺陷的跟踪,并提供相关的错误信息●开发人员可以专注于高优先级的缺陷,深入到源代码浏览器,检查缺陷和分配状况●源代码扫描项目使用的唯一的缺陷跟踪技术构建整个释放建立缺陷状态和状态跟踪14安全漏洞检测:确信软件安全性是软件质量中一个重要的、并越来越受重视的方面。同样的,所有的安全漏洞分析是基于市场领先的缺陷检测能力。从原来的缺陷检测分离出来单独的安全漏洞检测和违反推荐的安全代码最佳实践的缺陷检测。能够检测到的安全漏洞类型举例(详细参见下表)扫描内容安全漏洞类型15安全漏洞错误代码:下面将列出安全漏洞中的错误代码及描述以供参考扫描内容安全漏洞检测—-错误代码16安全漏洞错误代码:下面将列出安全漏洞中的错误代码及描述以供参考扫描内容安全漏洞检测—-错误代码17下面对在源代码扫描中的安全漏洞选取几例常见的错误进行说明安全漏洞类型:缓冲区溢出子错误代码:ABV.TAINTED-缓冲区溢出缓冲区溢出中的一个子类报错信息-未经验证的输入缓冲区溢出,即形参超出了本身定义的范围上限摘取的实例如下:源码:G:\c++\bizlib\view\HServer.cpp,行71错误描述:Bufferoverflowfromunvalidatedinputusedasanarrayindexof'sconname'whichmaybeoutofbounds.Array'sconname'ofsize50mayuseindexvalue(s)0..SHRT_MAX-1分析:形参sconname超出了定义的范围长度扫描内容18安全漏洞类型:未经验证的用户输入子错误代码:SV.TAINTED.ALLOC_SIZE-未经验证的输入摘取的实例如下:源码:G:\c++\i\bank\bankother\bankhz.cpp行353错误描述:Unvalidatedintegervalue'lGetLen'isreceivedfromanexternalfunctionthroughacallto'atol'atline344whichcanbeusedtoaltermemoryallocationsizethroughcallto'ReadBufs'atline353.Useofunvalidatedinputformemoryallocationcanleadtoadenialofservicecondition.Checkintegersforreasonablelimits.分析:由于这里在分配内存时调用了一个外部函数,但此外部函数中并没有明确整形变量lGetLen的值,导致检测出来此错误.扫描内容19安全漏洞类型:注入缺陷子错误代码:SV.IL.DEV-注入缺陷揭示一个应用程序的实现细节是安全问题,因为它提供了攻击者与信息可以用于进一步的攻击。.一般而言,信息的数量向网络接口将降至最低,在特定的设计细节不应该被揭示摘取的实例如下:源码:G:\NGCRM_CODE\src-background\com\sunrise\ngcrm\background\comminterface\BaseProcessor.java,行80方法:toHandTaskFile错误描述:Applicationisrevealingdesigninformationparameter'ex.getMessage()'ofcalltodoWriteLogFile(...)backtotheweb.分析:设计信息的泄漏,可预防消除信息发送到网络接口的应用价值。一般用户的应用可能不会需要这样的信息,攻击者可以获得信息,可用于进一步的袭击。一个普通的情况设计信息的披露在javaexception-handling发生。.在编程求解过程中异常信息是有用的,但也很危险后放出。必须非常小心的展示或发送异常信息,并确保用户从未见过这样的信息。.所有的堆栈跟踪和调试信息应存放在服务器日志的地方,攻击者看不懂扫描内容20●源代码扫描项目还可通过前端的工具KlocworkArchitect来完成对软件架构的分析●理解和优化您的架构–能够更好地了解大型软件系统–降低软件的复杂性,简化架构,提高系统的可维护性–创造更多的可重用的组件,执行所需的API的用法–清理和优化你的头文件的结构,从而导致更好的可维护性,缩短构建时间和降低复杂性扫描内容21●源代码扫描项目还可通过前端工具来完成对软件度量分析●报告.让您只需点击几下你构建复杂的问题的答案.跟踪整个释放的关键质量指标支持为客户提供的主要指标,以创建自己的复合度量监控关键指标建立了构建组件,度量类型扫描内容源代码扫描—-软件度量分析22项目概述——互联网用户管理中心建设项目源代码扫描——可定制的代码分析定位:许多组织有自己独特的编码标准、安全策略或质量目标。经过我们项目的扩展您可以将我们的分析引擎应用到您独特的、公司特色的问题另外,我们项目的可扩展性能够用于实现行业特定的编码标准,保证遵守最新的最佳实践。客户可使用项目中介绍的扩展性API或者使用项目提供的专业服务编写适合您的检查器扫描内容23项目概述——互联网用户管理中心建设项目源代码扫描——与IDE的集成简介:源代码扫描项目与众不同的核心之一就是我们能够集成到您选定的开发环境中去。通过集成,在开发人员的桌面上即可自动进行代码的检查,您可创建更为优秀的软件并通过在开发过程早期捕捉到潜在的问题而降低开发成本。目前能够与Eclipse、WindRiverWorkbench2.3、VisualStudio6/2002/2003/2005、IBMRationalApplicationDeveloperforWebsphereSoftware、Gvim、Emacs、VisualSlickEdit、PlatformBuilder、KDevelop、MetroWerksCodeWarrior、IntelliJ等集成扫描内容24●KW客户端在安装时会自动将插件集成到VS●打开VS,在工具-自定义菜单下面将klocwork勾选上,如下图扫描内容与VS的集成25●设置与服务端的连接●配置相应的host与port.如下图扫描内容26●在kw-user-installer的安装目录下的update-site找到插件kw-eclipse-update-site.zip,安装到eclipse下面去与eclipse的集成扫描内容27●在eclipse的preferences下面配置klocwork扫描内容28扫描内容强类型检查变量值跟踪语义信息错误分类语法错误内部错误致使错误告警消息赋值顺序检查弱定义检查格式检查缩进检查Const变量检查对象比较空的try/cat
本文标题:源代码安全扫描服务
链接地址:https://www.777doc.com/doc-1597692 .html