3.5 谁应该实施软件安全
软件安全存在于许多机构中,但是却没有人专门负责处理它们。开发人员、架构人员和其他的建造人员经常都意识不到软件安全,并且仅仅具备有限的软件安全方面的知识。当他们的软件受到安全故障的困扰时,他们常常觉得与自己无关,并辩驳说,安全是负责安装和操作他们所创建的软件的操作人员的事。
当软件面临一个安全问题时(比如说,在展示风险分析结果的过程中),开发人员和软件团队的一种非常普遍的反应就是,“你不能这样做!没有人会这样做的!即使他们会这样做,你也不应该这样做!”那些说这种话的软件人员通常认为安全是IT的工作和一种基础设施的问题。到现在为止,你应该认识到,这种看法为什么是不正确的。软件安全接触点的一个主要目标就是让软件团队掌握用足够的知识,杜绝这类借口。在整个软件开发生命周期中理解和考虑软件安全,开发人员就能避免出现危险的意外。
当干净的、基本上是安全的网络被不安全的软件污染时,操作人员就变得无所适从。他们不理解为什么软件人员生产出这样的“废品”,并且他们认为自己对出现的安全问题没有责任。他们谴责软件的这种可怜状态,并希望软件开发人员更多地了解安全问题。绝望之下,操作人员只好紧紧地抓住诸如应用程序防火墙和侵入检测系统之类的救命稻草。
显然,这不是一种健康的情形。在因劣质软件而产生安全问题时,实际上没有人出来负责。其实并不是实际进行操作的安全人员的错(并不是他们的软件出错),也不是软件人员的错(他们并不是安全人员)。从组织上来说,这是一个管理规范的问题。
在最理想的情况中,软件安全应该是大家的责任。在现实一点的情形中,将责任和义务交给特定的小组有助于解决这个问题。
一个值得考虑的建议是,找到对于操纵你的整个软件系统最熟练的人员,并让他来负责软件安全。当出现重大的问题,但是你并不知道是什么原因导致的时候,就找这个人来询问。你所询问的这个万事通就是你所需要的新的软件安全人员 。
建立一个软件安全组
目前业界还没有出现很多的软件安全人员。这是很可惜的事情,因为显然我们需要更多的软件安全人员。幸运的是,学术界似乎开始慢慢地关注这种情形,而且许多的学校开始教授软件安全和/或安全工程课程(参见下一个文本框,“软件安全在学术界的状况”)。
等待学术界产生解决方案是被动的。相反,我们需要在现有机构(比如你所在的机构)内部培养软件安全人员。如果你打算在你的机构内培养出一些软件安全人员,就请考虑如下的建议。
不要在安全人员中培养软件安全人员
我们发现自己经历了计算机安全的失败,要解决这个问题,软件安全的确是很关键的。但是,标准的被动反应式方法并不能获得成功。网络安全人员对软件的了解太少,不足以使他们成为好的软件安全人员。他们可能知道关于如何操作软件的大量知识(在许多情况下,甚至比开发人员和架构人员知道的还多),但是这对于我们解决软件安全问题并没有多少帮助。普通的安全工作人员几乎根本不了解编译器、语言框架、软件体系结构、测试,以及成为一个称职的软件人员所需的许多其他的知识。
1软件安全在学术界的状况 工作。普渡大学的Eugene Spafford在进行更好的安全教育方面也起了很大的推动作用。想要获得关于这个重要话题的更多 信息,请参见IEEE Security & Privacy杂志的“教育”版<http://www.computer.org/security>。 |
用ITS4之类愚蠢的第一代代码扫描程序,或者用Sanctum的Appscan之类的黑盒测试工具来装备一个普通的信息安全人员几乎没有任何用处。工具还不够聪明,并不能在一夜之间就将网络专业人员变成软件人员。要特别小心那些自称是应用程序安全专家的安全咨询人员,他们其实只会运行ITS4或者Appscan,然后打印出令人费解的报告。
从软件人员中培养软件安全人员
学习和体验安全要比软件开发容易得多。好的软件人员是非常有价值的,但是软件安全非常重要,我们不得不把这些极宝贵的人员放在这个新的位置上。还要注意,软件人员仅仅对其他的软件人员感兴趣,特别是那些具有特殊才能的人。不要搞错了,把一些没有能耐的人或者网络新手带到一组经验丰富的开发人员面前。这样导致的愤怒肯定是很可怕的(如果不是非常有趣的话)。
对于成功的软件安全计划(参见第10章)来说,确定一个或者两个负责任的人员是非常关键的。不仅从责任的角度来看,这很重要,而且,专注的人的爆发力是难以估量的。如果你想要采用一种新的方法来进行代码审核(使用一种类似Fortify的工具),就请确定一位胜任的人,并授权他来完成这项工作。
在软件安全组中最有用的头号人物,经常是负责处理外部咨询人员指出的软件安全风险的风险管理专家。指定一个风险管理人员,很可能就能避免这种重要的结果被掩盖或者被忙碌的机构遗忘(现在又有谁不忙碌呢?)。风险管理专家可以负责执行RMF。
如果在你的机构中不存在软件安全类型,就不可能指导或者培训出一个新的软件安全人员。如果真是这样,就需要雇佣外部的咨询人员来帮助你建立一个小组。现在软件安全人员所具备的广泛的经验和知识非常宝贵,这种人员也极为少见,但是,培养你的人员并使他们具备这种才能,在这方面的投资是很值得的。
最后,你需要两种类型的人员来组成你的软件安全小组:进行黑帽子思维的人员和进行白帽子思维的人员。如果你幸运的话,你就能找到能够换帽子——摘掉一顶帽子,换上另一顶帽子,进行思维的人员。但是,更可能的是,你有一些很好的建设类型的人(他们本性上偏向白帽子一方)和一些狡猾的破坏类型的人(他们本性上偏向黑帽子一方)。在有的情形中,这类似于建造人员和审核人员的区别。但是,你同时需要他们,因为接触点需要这两种类型的人员。大家都知道,建造人员比审核人员要重要得多。
| 回书目 上一节 下一节 |