基于渗透测试和源代码扫描的软件安全测试和开发
软件测试中的安全认证和合规性测试

软件测试中的安全认证和合规性测试在软件测试过程中,安全认证和合规性测试是两个非常重要的方面。
安全认证测试主要是为了验证软件在安全性方面的符合度,而合规性测试则是为了确保软件满足法律法规和行业标准的要求。
本文将就软件测试中的安全认证和合规性测试展开讨论。
一、安全认证测试在软件开发过程中,安全性是一项至关重要的考虑因素。
安全认证测试旨在发现和修复潜在的安全漏洞和风险。
下面是几个常用的安全认证测试方法:1.渗透测试渗透测试是通过模拟黑客攻击来评估软件系统的安全性。
测试人员会利用各种攻击手段,包括网络扫描、密码破解和DDoS攻击等,来检查系统的弱点和漏洞,并提供相应的修复建议。
2.代码审查代码审查是对软件源代码进行仔细分析,以发现潜在的安全漏洞和错误。
通过代码审查,可以及早发现并修复潜在的安全风险,提高软件系统的安全性。
3.漏洞扫描漏洞扫描是通过扫描软件系统,寻找可能存在的已知漏洞。
测试人员使用专门的工具来扫描系统,识别潜在的漏洞,并及时修复以确保系统的安全性。
二、合规性测试合规性测试是为了确保软件系统符合相关法律法规和行业标准的要求。
下面是几个常用的合规性测试方法:1.法律法规测试法律法规测试是验证软件是否符合相关法律法规的要求。
测试人员会仔细研究与软件相关的法律法规,然后验证软件是否符合其要求,以避免在产品发布后因法律问题而产生风险。
2.隐私保护测试隐私保护测试是为了验证软件是否符合隐私保护的要求。
测试人员会测试软件是否正确处理用户的个人信息,是否存在泄露或滥用用户信息的风险,并提供相应的修复建议。
3.行业标准测试行业标准测试是为了验证软件是否符合相关行业标准的要求。
测试人员会仔细研究行业标准,并验证软件是否满足其规定,以确保软件在特定行业中的合规性。
综上所述,软件测试中的安全认证和合规性测试是保证软件系统安全性和合法性的两个重要方面。
通过安全认证测试,可以发现和修复潜在的安全漏洞和风险;通过合规性测试,可以确保软件系统符合相关法律法规和行业标准的要求。
安全测试的常用方法

安全测试的常用方法全文共四篇示例,供读者参考第一篇示例:安全测试是信息安全领域中的一个重要环节,主要目的是评估软件、系统或网络的安全性,以发现潜在的安全漏洞,并采取相应的措施进行修复。
安全测试也被称为渗透测试、黑盒测试或漏洞扫描等,其主要任务是模拟恶意攻击者的攻击行为,以评估系统的安全性并提供建议以加固系统。
在进行安全测试时,有许多常用的方法和技术可供选择,包括但不限于以下几种:1. 渗透测试渗透测试是指从攻击者的角度对系统、网络或应用程序进行测试,以确认系统的安全性和完整性。
渗透测试旨在模拟真实的黑客攻击,并通过检测漏洞和弱点来评估系统的安全性。
经过渗透测试后,安全团队可以了解系统中存在的安全问题,并进一步完善系统的防御措施。
2. 漏洞扫描漏洞扫描是一种自动化的安全测试方法,通过扫描系统或网络中的漏洞和弱点来发现潜在的安全威胁。
漏洞扫描工具可以帮助安全团队快速发现系统中存在的漏洞,并及时采取措施进行修复,以避免被攻击者利用漏洞进行攻击。
3. 安全代码审查安全代码审查是对软件或应用程序源代码的审查,目的是发现代码中存在的潜在安全漏洞和弱点。
安全代码审查可以帮助开发团队及早发现并修复代码中存在的安全问题,提高软件的安全性和稳定性。
4. 社会工程测试社会工程测试是一种模拟通过社交工程手段获取系统、网络或应用程序中敏感信息的行为。
安全团队可以通过社会工程测试了解系统用户对安全策略和流程的重视程度,以及对社交工程攻击的防范意识,从而建立健全的安全培训和意识教育机制。
5. 安全架构审查安全架构审查是对系统或网络安全架构设计的审查,目的是评估系统中安全控制措施的有效性和完整性。
通过安全架构审查,安全团队可以发现系统架构设计中存在的潜在安全风险和威胁,从而及时采取措施进行加固和修复。
6. 模糊测试模糊测试是一种通过在输入中引入非法、异常或随机数据来发现软件或应用程序中潜在漏洞和弱点的方法。
模糊测试可以帮助安全团队找出系统中存在的输入验证失败、缓冲区溢出、逻辑错误等安全问题,并采取相应措施进行修复。
安全测试中的安全测试工具比较和选择

安全测试中的安全测试工具比较和选择在安全测试中,选择适当的安全测试工具是至关重要的。
本文将对常见的安全测试工具进行比较和选择,并为读者提供相关建议。
一、安全测试工具的分类安全测试工具通常分为静态测试工具和动态测试工具两大类。
1. 静态测试工具:静态测试工具主要用于对源代码、二进制代码或配置文件进行分析,以发现其中可能存在的安全漏洞。
常见的静态测试工具有:- 静态代码分析工具:通过对源代码的扫描,检测潜在的漏洞和缺陷。
例如,Coverity和Fortify等工具可以对代码进行静态分析,发现其中的安全隐患。
- 配置文件检查工具:用于检查系统的配置文件是否存在问题。
例如,OpenVAS和Nessus等工具可以对服务器的配置文件进行扫描,检测其中的安全配置问题。
2. 动态测试工具:动态测试工具主要通过模拟实际的攻击行为,对目标系统进行测试。
常见的动态测试工具有:- 漏洞扫描工具:通过对目标系统进行扫描,检测其中可能存在的漏洞。
例如,Nikto和OpenVAS等工具可以对Web应用进行扫描,发现其中的漏洞。
- 渗透测试工具:模拟黑客攻击行为,对目标系统进行全面的测试。
例如,Metasploit和Burp Suite等工具可以对系统进行渗透测试,发现其中的弱点和漏洞。
二、安全测试工具的比较和选择在选择安全测试工具时,需要根据实际需求和目标系统的特点进行评估和比较。
下面是一些选择和比较工具的要点:1. 功能特点比较:- 根据实际需求,选择对应的功能特点。
例如,如果需要对Web应用进行测试,可以选择具有漏洞扫描和渗透测试功能的工具。
- 考虑工具的易用性和灵活性。
一些工具具有友好的图形界面和丰富的功能,适合初学者使用;而另一些工具提供了更多的定制和扩展能力,适合有经验的安全测试人员使用。
2. 性能和效果比较:- 考虑工具的性能和效果。
一些工具可能在发现漏洞的准确性和覆盖率方面表现更好,但可能会增加系统的负载;而另一些工具可能对系统的影响较小,但可能会漏报或误报漏洞。
软件安全测试方法有哪些?安全测试报告如何收费

软件安全测试方法有哪些?安全测试报告如何收费?安全测试是软件测试必不可少的一项重要测试活动,安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。
安全测试可以有效提升软件产品的安全质量,尽量在产品发布前找到安全问题予以修复以降低成本。
一、软件安全测试方法有哪些?1、静态的代码安全测试主要是对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。
可以在编码阶段找出所有可能存在安全风险的代码,这样开发人员可以在早期解决潜在的安全问题。
但静态代码测试比较适用于早期的代码开发阶段,而不是测试阶段。
2、动态的渗透测试渗透测试是使用自动化工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行时刻所存在的安全漏洞。
一般找出来的问题真实有效正确,但较为严重,缺点是模拟的测试数据只能到达有限的测试点,覆盖率很低。
3、程序数据扫描数据扫描的手段通常是进行内存测试,内存测试可以发现许多诸如缓冲区溢出之类的漏洞,而这类漏洞使用除此之外的测试手段都难以发现。
二、安全测试报告如何收费?软件安全测试一般是按照测试的功能点和项目大小来决定的,每个检测机构收费都有不同,且不同的时间和地域也有差别,想要获得2023软件测试报告最新报价的朋友可以咨询卓码软件测评。
卓码软件测评,独立的权威第三方软件测试机构,多年来只专注于软件测评服务,获得国家承认的CMA、CNAS双重认证资质,拥有测试经验丰富、技术成熟的专业测试团队,先进一流的测试环境和测试平台,全国范围内可服务,价格优惠,出具的软件测试报告公正权威具备法律效力。
软件安全测试

软件安全测试
软件安全测试是指针对软件系统进行评估和验证,以确定其安全性的过程。
软件安全测试主要包括以下几个方面:漏洞扫描、渗透测试、代码审核和安全评估。
漏洞扫描是软件安全测试的关键环节之一,通过使用一系列自动化工具对软件系统进行扫描,寻找其中的漏洞和弱点。
这些工具可以自动检测常见的安全漏洞,如输入验证、代码注入、跨站脚本攻击等。
漏洞扫描的目的是发现软件系统中存在的潜在威胁,并及时修复。
渗透测试是通过模拟恶意攻击者的行为,对软件系统进行安全评估。
渗透测试可以模拟常见的攻击手法,如SQL注入、密
码破解、分布式拒绝服务攻击等,测试软件系统对这些攻击的抵抗能力。
渗透测试的目的是寻找软件系统中的安全漏洞,并提供修复建议。
代码审核是对软件系统源代码的静态分析,以检测其中的安全问题。
通过阅读和分析代码,可以发现软件系统中存在的潜在风险,如缓冲区溢出、不安全的函数调用等。
代码审核的目的是及早发现并修复源代码中的漏洞,提高软件系统的安全性。
安全评估是对软件系统进行全面的评估,包括对系统的功能、性能和安全性等方面进行考察。
通过安全评估,可以评估软件系统对各种威胁的抵抗能力,并提供改进建议。
安全评估的目的是确保软件系统在设计和开发的各个阶段都具备足够的安全性。
总之,软件安全测试是保证软件系统安全的重要环节。
通过漏洞扫描、渗透测试、代码审核和安全评估等手段,可以发现软件系统中存在的漏洞和弱点,并提供相应的修复建议。
软件安全测试能够帮助开发人员和用户了解软件系统的安全性,并提高软件系统的整体安全性。
软件安全测试与漏洞扫描工具的使用技巧

软件安全测试与漏洞扫描工具的使用技巧随着互联网的发展和普及,软件安全问题变得越来越重要。
为了保证软件系统的安全性,软件开发者必须采取一系列的安全测试和漏洞扫描措施。
本文将介绍一些常用的软件安全测试和漏洞扫描工具,并提供一些使用技巧,以帮助开发者提高软件系统的安全性。
一、软件安全测试工具1. OWASP ZAP:OWASP ZAP(Open Web Application Security Project Zed Attack Proxy)是一款功能强大的免费开放源代码的安全测试工具。
它可以用于寻找Web应用程序中的安全漏洞,如跨站脚本(XSS)、SQL注入等。
使用OWASP ZAP,开发者可以模拟真实攻击的行为并发现潜在的漏洞。
使用技巧:- 配置代理:在使用OWASP ZAP进行测试之前,将浏览器的代理配置为ZAP代理,这样ZAP可以拦截和分析应用程序的请求和响应,提供更准确的测试结果。
- 主动和被动扫描:ZAP支持主动和被动两种扫描模式。
主动扫描通过发送特定的攻击向量来测试目标应用程序,而被动扫描只是观察和分析应用程序的流量。
为了获得更全面的测试结果,应该同时进行主动和被动扫描。
2. Burp Suite:Burp Suite是常用的渗透测试和漏洞扫描工具,它有免费版本和高级版本。
Burp Suite可以用于发现和利用Web应用程序中的安全漏洞,如CSRF(跨站请求伪造)、路径穿越等。
使用技巧:- 设置代理:与OWASP ZAP类似,使用Burp Suite进行测试之前,需要配置浏览器的代理设置,以便Burp Suite能够拦截流量并进行分析。
- 使用被动扫描:Burp Suite可以在被动模式下监视应用程序的流量,通过观察和分析流量来发现潜在的安全问题。
开发者可以在使用应用程序的同时进行被动扫描,以获得更准确的测试结果。
二、漏洞扫描工具1. Nessus:Nessus是一款强大的漏洞扫描工具,可用于发现网络主机和应用程序中的安全漏洞。
三款静态源代码安全检测工具比较

源代码安全要靠谁?1. 概述随着网络的飞速发展,各种网络应用不断成熟,各种开发技术层出不穷,上网已经成为人们日常生活中的一个重要组成部分。
在享受互联网带来的各种方便之处的同时,安全问题也变得越来越重要。
黑客、病毒、木马等不断攻击着各种网站,如何保证网站的安全成为一个非常热门的话题。
根据IT研究与顾问咨询公司Gartner统计数据显示,75%的黑客攻击发生在应用层。
而由NIST的统计显示92%的漏洞属于应用层而非网络层。
因此,应用软件的自身的安全问题是我们信息安全领域最为关心的问题,也是我们面临的一个新的领域,需要我们所有的在应用软件开发和管理的各个层面的成员共同的努力来完成。
越来越多的安全产品厂商也已经在考虑关注软件开发的整个流程,将安全检测与监测融入需求分析、概要设计、详细设计、编码、测试等各个阶段以全面的保证应用安全。
对于应用安全性的检测目前大多数是通过测试的方式来实现。
测试大体上分为黑盒测试和白盒测试两种。
黑盒测试一般使用的是渗透的方法,这种方法仍然带有明显的黑盒测试本身的不足,需要大量的测试用例来进行覆盖,且测试完成后仍无法保证软件是否仍然存在风险。
现在白盒测试中源代码扫描越来越成为一种流行的技术,使用源代码扫描产品对软件进行代码扫描,一方面可以找出潜在的风险,从内对软件进行检测,提高代码的安全性,另一方面也可以进一步提高代码的质量。
黑盒的渗透测试和白盒的源代码扫描内外结合,可以使得软件的安全性得到很大程度的提高。
源代码分析技术由来已久,Colorado 大学的 Lloyd D. Fosdick 和 Leon J. Osterweil 1976 年的 9 月曾在 ACM Computing Surveys 上发表了著名的 Data Flow Analysis in Software Reliability,其中就提到了数据流分析、状态机系统、边界检测、数据类型验证、控制流分析等技术。
随着计算机语言的不断演进,源代码分析的技术也在日趋完善,在不同的细分领域,出现了很多不错的源代码分析产品,如 Klocwork Insight、Rational Software Analyzer 和 Coverity、Parasoft 等公司的产品。
开放源代码软件平台中的安全性评估与分析

开放源代码软件平台中的安全性评估与分析在数字化时代,开放源代码软件平台的应用广泛而受欢迎,因其开放性、安全性和可定制性而备受青睐。
然而,就像任何其他软件平台一样,开放源代码软件也面临着安全风险。
为了确保平台的安全性以及用户数据的保护,必须对开放源代码软件平台进行严格的安全性评估与分析。
首先,安全性评估与分析是一种系统的方法,用于识别开放源代码软件平台可能存在的安全问题和漏洞。
这项工作通常由专业的安全团队或独立的第三方机构来执行。
评估的目标是确定软件平台的弱点,并提供解决方案以加强其安全性。
安全性评估通常包括以下几个方面的内容:1. 漏洞扫描:通过使用自动化工具对源代码进行审查,以检测可能存在的安全漏洞。
这些漏洞可能包括输入验证不足、缓冲区溢出、代码注入等。
2. 静态代码分析:通过对源代码的静态检查,评估软件平台的安全性。
这种方法主要侧重于检测代码中的安全漏洞和弱点,并提供修复建议。
3. 动态代码分析:通过模拟实际环境下的攻击来评估软件平台的安全性。
这种方法通常使用黑盒和白盒测试技术,以模拟来自外部的攻击,并确定平台的抵御能力。
4. 漏洞利用与渗透测试:通过实际测试,验证已识别的漏洞,并评估其对平台的影响。
这种测试方法可以帮助开发者理解存在的风险,并采取相应的措施防止漏洞被利用。
除了评估软件平台本身,还需要考虑到平台所依赖的硬件、操作系统和其他基础设施的安全性。
因为这些组件的安全性问题可能会影响到整个软件平台的安全性。
一旦安全性评估与分析完成,就可以根据评估结果采取相应的安全措施。
这些措施可能包括修补已发现的漏洞、加强访问控制措施、使用加密技术来保护数据、定期更新软件以获取最新的安全修复程序等。
此外,开放源代码软件平台还应定期进行安全性评估与分析,以持续提高其安全性。
值得注意的是,在使用开放源代码软件平台时,用户也需要采取一定的安全措施来保护自己的数据和隐私。
这包括使用强密码、定期备份数据、避免下载和安装来自不可信来源的软件等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于渗透测试和源代码扫描的软件安全测试和开发自从软件诞生起,软件的安全性一直就是每一个程序员不可回避的问题。
面对“如何开发出具有高安全性软件”与“如何利用软件漏洞进行攻击”,安全防护人员和黑客,就像中国武侠中的白道高手与黑道高手一样,在相互的较量中提升自己的功力。
自从软件诞生起,软件的安全性一直就是每一个程序员不可回避的问题。
面对“如何开发出具有高安全性软件”与“如何利用软件漏洞进行攻击”,安全防护人员和黑客,就像中国武侠中的白道高手与黑道高手一样,在相互的较量中提升自己的功力。
随着计算机语言的不断进化和互联网时代的到来,软件所面临的安全性问题也在发生着巨大改变。
如果将最初的单机病毒攻击成为软件安全的第一纪,网络攻击称为第二纪的话,那我们现在正处在软件安全的第三纪 -- 应用攻击。
Gartner 的数据显示,75% 的黑客攻击发生在应用层。
而来自 NIST 的数据更为惊人,有 92% 被发现的漏洞属于应用层而不是网络。
图 1. 来自 Gartner 和 NIST 的数据在这些软件安全问题中,由于没有在软件设计和开发的过程中引入安全开发和测试的情况占了很大比例。
其实,从 1968 年软件工程诞生以来,人们一直企图在软件开发生命周期(SDLC)中引入安全开发的理念和方法,并由此出现了安全开发生命周期(Secure Development Lifecycle)。
在本文中,我们就将结合示例来讨论一下如何能够在软件开发生命周期中进行软件安全开发和测试的问题。
图 2. 安全开发生命周期示意图软件安全的“闻问望切”—基于黑盒的渗透测试无论是在传统的瀑布模型开发还是在方兴未艾的敏捷软件开发中,软件测试都是重中之重。
基于黑盒的渗透测试,是一种有效地将软件安全性测试引入软件开发生命周期(SDLC)中的方法。
目前,许多软件厂商都有针对各自技术研发出的渗透测试产品,如 IBM 的 AppScan、HP 的 WebInspect 等。
说到渗透测试,就不能不提到由 Barton Miller 和 Lars Frederickson 等人在 1990 年提出的 Fuzz 技术。
传说在 1989 年一个雷电交加的夜晚,Barton Miller 用 Modem 连接自己的主机时,一个闪电过后,电路中的高低位互换了,Miller 由此想到了利用“crash、break、destroy”的方式来进行软件测试的技术——fuzz。
著名的 Fuzz 工具有 Fuzzing 网络协议的 SPIKE、大桃子 Peach等等。
Fuzz 技术自上世纪 90 年代初期起,慢慢的广泛应用于系统平台测试,应用软件测试和网络安全测试中。
下面我们将展示如何针对一个 Web 应用进行基于安全漏洞检测的渗透测试。
在这里我们选用 IBM Rational AppScan Standard Edition V7.8 (以下简称 AppScan)作为测试工具。
首先,我们在 AppScan 里建立一个新的扫描。
AppScan 提供了许多预定义的扫描模板来帮助工程师建立针对不同 Web 应用和 Web Service 的扫描。
图 3. 用 Rational AppScan 模板创建扫描在这个示例中,我们将对架设在笔者本地的 Tomcat V5.5 服务器上一个名为 AltoroMutual 的电子商务系统进行安全渗透测试。
图 4. 扫描 URL 配置完成指定扫描的起始 URL 后,我们将一个拥有普通用户权限的用户名和密码输入到 AppScan 的自动登录选项中。
AppScan 还支持通过录制并在测试时播放的方式进行登录。
图 5. AppScan 扫描登录配置在 AppScan 中,测试策略的选择会对不同的 Web 应用和 Web Service 产生影响。
在本示例中我们仅选择了针对 Web 应用和 Tomcat 应用服务器的具体中高漏洞等级的自定义测试策略。
其实当我们打开每一个具体的测试策略时,会发现AppScan 在其中定义了包括针对 Java、.NET、PHP 等不同类型网站测试类型种类和相应安全问题严重程度的级别。
图 6. AppScan 安全测试策略配置图 7. AppScan 安全测试策略的详细内容通过设置 URL 入口、登陆方式和测试策略,AppScan 可以快速完成 Web 应用扫描的配置,从而开始漏洞检测。
其实,除了上述几种设置,我们在图 7 左侧还可以发现更为完善的测试配置项,比如对参数和 Cookie 的设置,对扫描访问的 URL 深度和广度进行配置,对需要填充的表单如何填写等等。
图 8. 进行扫描中与发现的部分安全问题AppScan 的扫描分为二部分,首先是进行探索,将发现的 URL 进行记录;其次进入实际的测试步骤,将利用之前我们设定的测试策略进行渗透测试。
下图是 AltoroMutual 应用经过 AppScan 黑盒测试发现的部分安全问题。
在 AppScan 主窗口左上方显示的 AltoroMutual 被扫描出的网站 URL 结构图,每个 URL 上发现的安全漏洞被标注在该 URL 后。
左下方的仪表板显示了安全问题的汇总,由于我们设定只针对中高级别的安全问题进行显示,所以 Low Level、Info Level 的问题数量为 0。
右上方将扫描出安全问题的种类和相应的 URL 一一罗列出来,而在其下方是每一个安全问题的详细描述、修复建议和问题复现。
图 9. AppScan 扫描完成后的主窗体一般来讲,基于黑盒的渗透测试具有较高的测试准确率,但是我们依旧需要对扫描出的安全问题进行分析和甄别,从而给出合理的安全级别和修复建议。
在本例中,我们具体分析一下 AltoroMutual 应用中存在的跨站脚本攻击(XSS)问题。
点击存在 XSS 问题的 URL“http:// /altoromutual/sendFeedback”中“name”,可以看到产生这个 XSS 问题的详细信息,我们通过查看“请求 / 响应”来对该漏洞进行复现和判断其严重程度。
点击“请求 / 响应”的标签后,我们发现 AppScan 发送了如下的内容给 AltoroMutual。
利用将“1234>%22%27><img%20src%3d%22javascript:alert(14404)%22>”插入到 cfile=comments.txt&name 后,实施 XSS 攻击。
图 10. AppScan 向服务器端发送的带有跨站脚本攻击的数据通过点击“在浏览器中显示”的方式,我们可以得以在 AppScan 内嵌浏览器中将这个跨站脚本攻击问题复现。
图 11. 在 AppScan 内置浏览器中进行 XSS 问题复现通过上面的扫描示例我们不难看出,基于黑盒的渗透测试确是有较为高的准确率。
在软件开发生命周期中,渗透测试可以帮助测试人员、QA 人员在 FVT、UAT 等阶段发现软件安全问题。
但是,渗透测试的全面性和覆盖率一直都是困扰着众多软件安全测试人员的问题。
而且对于开发人员来说,他们更为关心如何能够在软件开发的早期阶段就能引入安全性的分析,让他们能够根据漏洞分析的提示,尽可能早地将安全问题Fix 在开发阶段,这就引入了基于白盒的源代码安全分析。
如果把检测软件漏洞比作去医院看病,那渗透测试就如同中医的“闻问望切”一般,通过给软件把脉,将病例病因一一道来。
而基于白盒的源代码分析,更像是西医的内观外治,先做完 X 片、B 超,然后对症下药。
其实长久以来,基于黑盒的渗透测试和基于白盒的源代码分析到底谁更为有效的问题一直争论不下,以至于还有了灰盒测试(Gray Box)的出现。
接下来就让我们一起通过示例看看白盒黑盒孰优孰劣。
给软件拍一张 X 光片—基于白盒的源代码分析源代码分析技术由来已久,Colorado 大学的 Lloyd D. Fosdick 和 Leon J. Osterweil 1976 年的 9 月曾在 ACM Computing Surveys 上发表了著名的 Data Flow Analysis in Software Reliability,其中就提到了数据流分析、状态机系统、边界检测、数据类型验证、控制流分析等技术。
随着计算机语言的不断演进,源代码分析的技术也在日趋完善,在不同的细分领域,出现了很多不错的源代码分析产品,如 Klocwork Insight、Rational Software Analyzer 和Coverity、Parasoft 等公司的产品。
而在静态源代码安全分析方面,Fortify 公司和 Ounce Labs 公司的静态代码分析器都是非常不错的产品。
2009 年 7 月底,IBM 发布收购要约,将 Ounce Labs 纳入 Rational 产品线。
在本示例中,我们选用 Ounce Labs 的安全分析器(Ounce Security Analyst 6.1)和 Rational Software Analyzer 来分别对示例代码进行静态源代码安全分析和代码质量分析。
为了保持示例一致性,我们选用 AltoroMutual 应用的源代码进行静态分析。
首先,我们用Ounce Security Analyst 6.1 进行源代码安全分析。
Ounce 的安全分析器(Ounce Security Analyst)支持多种部署方式,可以独立运行,也可以通过 Plug-in 的方式运行在软件开发人员的集成开发环境中。
在软件开发生命周期(SDLC)中,对于开发人员,更多的是希望在日常的开发过程中能够进行源代码的安全分析和检查,因此在本文的示例中我们选择将 Ounce 安全分析器(Ounce Security Analyst)通过插件的方式 Plug-in 到基于 Eclipse 的 IBM Rational AppScan Developer Edition 7.8.1 中来使用。
图 12. Ounce Labs 在 RADE 中的插件下面我们在装有 Ounce Security Analyst 的 Rational AppScan Developer Edition 中,将 AltoroMutual 的源文件导入,我们发现 Plug-in 后的 Rational AppScan Developer Edition 上会多了一个名称为 Ounce 的菜单。
图 13. 在 RADE 中将 AltoroJ 项目编译通过对于一般的静态安全分析而已,保持代码在做静态安全分析前的可编译性是一项非常重要的工作。
因此建议软件开发人员在进行静态安全分析前首先保证自己的代码是编译通过的。