有一篇关于安全性测试工具的文章:《Gunfight at The OK Button》。
文中列出了安全测试工具的15个要点:
一、针对源代码,测试出任何类型的弱点。
二、针对二进制文件,例如可执行文件,测试出任何类型的弱点。
三、检测实时系统的问题,像死锁检测、异步行为的问题等。
四、对任何类型的补丁建立基线并进行回归测试,防止引入新的弱点。
五、提供一个机制,确保已通过检查、校验的源代码一旦构建成为可执行文件后,没有被更改。
六、帮助测试人员找到可能触发或隐含恶意代码的地方。
七、提供关于二进制文件的信息,例如哪一个本地系统对象被建立了。
八、在软件开发周期中的不一样阶段都能应用,检查软件的弱点。
九、尽量小的错误偏差。
十、能处理外国语言的源代码,例如外国语言的注释等。
十一、平台兼容性,例如Unix、Linux、Windows等。
十二、开发语言兼容性,例如C、C++、ADA、Java等。
1三、能够处理大容量的源代码或很大的可执行文件,例如上百万行的代码。
1四、不改变被测试的软件,不影响代码。
1五、产生有用的诊断、预测和度量分析报告。
文中还分类列出了几款分别知足这些不一样要点的安全性测试工具
一、分析检查器、内存泄漏检测工具、二进制代码扫描器(Profilers, checkers,memory-leak detection tools,Binary code scanners)
开源的:Valgrind (www.valgrind.org)
商业的:Rational/IBM Purify(www.ibm.com)、http://samate.nist.gov/index.php/Binary_Code_Scanners
二、应用程序痕迹检查工具(Application footprinting)
UNIX 平台:lsof 、strace、ktrace 、truss
Windows平台:ProcessExplorer
三、模糊测试工具(Fuzz testing tools and techniques (also known as penetration testing))
Peach Fuzzer Framework (http://peachfuzz.sourceforge.net/)
四、静态代码分析工具(Static code analyzers)
开源的:Splint(http://splint.org)
商业的:PRQA(Programming Research)www.programmingresearch.com、Coverityphp