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