漏洞大多数是会导致程序强制操作一些不同与原来作者本来意图的行为,而这些缺陷和错误一般遵循着的固定的样式,我们这文章的目的是示范怎样组织它们,多数情况下,我们的思路是考虑”假如这样然后会怎样?”和仿效攻击者的思路。
对于计算机软件可靠性方面已经有不少方面的研究,威斯康星大学研究所对许多不同UNIX版本操作系统基本工具程序进行过测试。在他们的“Fuzz Revisited: A Re-examination of the Reliability of UNIX Utilities and Services”一文中,研究人员通过传递随机数据到程序中对这些程序进行过测试,在1990年开始的测试过程中,发现普通的程序超过”%40”和X-WINDOWS程序存在问题而导致崩溃或者挂起,不过在1995年的测试一中,同样的失败率得到一定程度的改良,不过仍旧在18-23%之间,不过发现商业类型操作系统比一些开放代码的系统如LINUX高很多,一般在2倍左右,GNU软件的故障率最低,只有7%。
而研究表明问题一般存在与传递随机的数据往往导致错误的产生,而这些错误可以通过构建精确的结构数据而利用并导致恶意的结果(如ROOT权利的获得)。
This document is currently maintained by Oliver Friedrichs of@securityfocus.com. This document is a work in progress and is expanded upon by discussions that have taken place on the SECPROG mailing list at http://www.securityfocus.com/forums/secprog/.
1,应用程序需使用于所有用户
n 由于所有用户要有权利访问它们,所有不能限制应用程序和目录的访问.
n 限制所有应用程序产生的文件,因为它们是每个用户独立产生的,确保只有产生文件的用户可访问.
2,应用程序只用于管理员
--- 限制所有其他用户不能访问应用程序和它的目录,可以在安装过程中指派.
n 限制所有应用程序产生的文件,因为它们是每个用户独立产生的,确保只有产生文件的用户可访问.
[1] Smashing the Stack for Fun and Profit By Aleph One
http://www.securityfocus.com/data/library/P49-14.txt
[2] Fuzz Revisited: A Re-examination of the Reliablity of UNIX Utilities and Services
ftp://grilled.cs.wisc.edu/technical_papers/fuzz-revisited.ps.Z
[3] The Unix Secure Programming FAQ, Tips on security design principles, programming methods, and testing By Peter Galvin
http://www.sunworld.com/sunworldonline/swol-08-1998/swol-08-security.html
[4] Communications with Theo de Raadt (deraadt@openbsd.org)
[5] Thomas Ptacek Bugtraq message regarding FreeBSD C runtime library overflow