1.2.2 缺点的范围
在缺陷和瑕疵之间画出泾渭分明的界限当然很好,但是,它们实际上是纠缠不清的。有时很难分清楚问题是一个缺陷还是一个瑕疵。这是因为,瑕疵和缺陷共存于一个连续渐变的缺点统一体中。软件系统中的安全缺点可能是从局部实现错误(比如在C/C++中使用gets()函数),到过程间的接口错误(比如,出现在访问控制检查和文件操作之间的竞争条件),直到更高层的设计级错误(比如,没有实现安全模式的错误处理和恢复系统,或者错误地包含了中间信任问题的对象共享系统)之间的任何问题。
在详细说明大范围缺点时,我们可以通过如下几点来仔细地考虑:必须考虑多少程序代码才能理解弱点,必须了解执行系统的多少细节才能理解弱点,以及设计级的描述对于确定某个给定的弱点是否出现是不是最合适的。例如,不必了解其他代码的任何信息、设计或者执行环境,只要假定用户在标准输入中输入的文本可能是恶意的,我们就可以确定,在C/C++程序中调用gets()可能被缓冲区溢出攻击利用。因此,使用非常简单的词法分析就能精确地检测出gets()弱点。这种方法是第4章的主题。读者可以在第12章中找到低层编码缺点的分类法。
中级的弱点通常都与代码中多个位置之间的交互有关。例如,对竞争条件的精确检测就不能仅仅依靠简单地分析一行孤立的代码来实现——而需要了解多个函数的行为表现,理解共享的全局变量以及熟悉提供执行环境的操作系统。
设计级的弱点就更复杂。令人遗憾的是,确定一个程序是否存在设计级弱点需要非常精深的专业知识(这是第5章的主题)。这使得查找设计级的瑕疵不仅很难做到,而且特别难以自动实现。其中的问题是,设计级的问题似乎非常普遍,并且至少为严重级的代码安全风险类别。
考虑一个错误处理和恢复系统。失败恢复(failure recovery)是安全工程所要面临的一个基本问题。但是,这个问题很复杂,因为它与失败模型、冗余设计和抵御拒绝服务攻击互相关联在一起。要理解面向对象的程序中的错误处理和恢复系统是否安全,就必须弄明白在典型的设计中分散在多个类中的全局属性。错误检测代码通常都出现在每一个对象和方法中,而错误处理代码通常不同于错误检测代码,并且与错误检测代码是分离的。有时异常也出现在系统级中,并由运行代码的机器来进行处理(例如,Java 2虚拟机的异常处理)。这使得确定一个给定的错误处理和恢复系统的设计是否安全非常困难。在基于事务的系统中,这类问题更为严重,因为这些系统一般用于商业中的电子商务解决方案,它们的功能都分布于运行在多台服务器上的许多不同组件中。
设计级问题的其他例子还包括对象共享和信任问题、未保护的数据通道(内部和外部)、不正确或者缺失的控制机制、缺乏审核/日志或者不正确的日志、排序(ordering)和定时(timing)错误(特别是在多线程系统中),以及其他的许多问题。为了使软件安全作为一门科学的学科有所发展,软件安全专业人士就必须理解这些问题,并对它们进行精确的分类。
| 回书目 上一节 下一节 |
|
· 上周真题冲刺测试获奖.. · 全国计算机等考四级模.. · 08年3月各大网上书店及.. · 网络工程师模拟测试获.. · 全国计算机软考考试指.. · 3月24日WCF聊天活动 积.. |
· 全国计算机等级考试四.. · 软件项目估计:第2版 · 系统分析师基础知识自.. · 构建可扩展的Web站点的.. · 2008年全国计算机等级.. · 网络数据安全与保密自.. |
|
||||
| · 微软出价446亿美元收购.. · 2008年4月全国计算机等.. · 2007年互联网大会 · 华为员工自杀频频拷问.. · 技术人求职简历完备手册 · 勇闯IT培训黑色围城 · 龙芯要做中国的“奔腾” · 国际文档格式标准开战 |
· 贝恩资本携手华为22亿.. · 隐私保护技术探讨 · Windows Server 2008专.. · NAC安全访问控制 · PHP开发应用手册 · ASP.NET 2.0基础开发指.. · WCF开发基础 · 路由器设置与口令恢复 |
|||
|
||||
| · iSCSI应用与发展 · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 中间件应用技术专题 · SQL Server入门到精通 |
· 病毒查杀专题 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux防火墙 · 打造安全服务器 · SOA 面向服务架构 · PHP开发应用手册 · ADSL应用面面俱到 |
|||
|
||||
| · iSCSI应用与发展 · 中间件应用技术专题 · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · iSCSI应用与发展 · RAID——磁盘阵列基础 · 病毒查杀专题 |
· 清除流氓软件——51CTO.. · 路由器设置与口令恢复 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · ADSL应用面面俱到 · ADSL应用面面俱到 · 反垃圾邮件技术应用 · PHP开发应用手册 |
|||