微软总部如何认真考虑在开发Windows 7的过程中就着手抓好安全

我最喜欢的软件开发人挑选在寿司餐馆与我会面或许是件好事, 因为当一个像我这样的计算机安全狂开始和一个像亚当[更改了原名以保护罪人 ] 这样的程序员辩论起来时,最好手边没有任何尖利的餐具。“‘安全不是你的问题?!’你这是什么意思?‘那问题以后再解决,’你这到底说的是什么?”我尖叫着,而此刻我的朋友平静地一边嚼咽一边解释说 ,在就职的地方,他们先构建软件,然后再处理“缺陷”,包括后来出现的任何安全漏洞。

接着他又要了些日本清酒,而我想的却是,对我来说,糟糕的寿司和亚当的软件哪个更可怕。

对我们中大多数人来说,幸运的是亚当不在微软就职。早在 2004年,在安全研究人员以及那些动机略欠不纯的人们抨击数年之后,微软在整个公司实施了一项政策,即从有人开始在那第一块白板上涂写之刻起,安全流程与软件开发就同时进行。Windows 7是公司旗舰操作系统完全遵循此流程的第二个版本。该流程在公司被称为微软安全开发周期,甚至可能深受喜爱。

深受喜爱?根据公司的安全开发周期 (SDL)团队主要安全计划经理David Ladd ,至少是已被接受。他说,这一流程在整个公司的开发团队里已是“根深蒂固”。安全检查已深入软件开发过程的所有六个阶段。

1. 需求。当开发人员开始弄清楚新软件里应有的特性时,项目便在微软的安全Windows提案小组注册。接下来该小组便向开发团队提供安全顾问。

2. 设计。新软件的要求和结构进一步充实具体化,同时安全人员为产品设计出安全架构和准则、检查潜在的攻击表面以及模拟可能的威胁。Ladd 说,自Windows Vista开发后的数年里, 公司进一步强调在开发过程的这一阶段就要抓好安全。也就是说,要在早期就进行,因为在这一阶段解决潜在的安全问题最容易,成本效益也最高。

在许多方面,威胁建模是和设计过程本身一样的创新思考,因为安全人员试图预测对任何可能与安全或隐私有关的软件功能的威胁(同样,此刻主体开发人员自己正在设计这些功能)。Ladd 不太愿意给出细节,但是他说团队为Windows 7设想了“数十个复杂性不等的威胁模式”。

3. 实施。在此阶段,编程工作已经真正地完全地展开。随着代码从开发人员那里传来,安全人员竭尽全力破码,进行代码检阅,运行查找缓存溢出(恶意软件的常见攻击向量)等的代码扫描工具、实施编码和测试标准、 运行其他安全测试软件,包括能查出与API有关问题的“模糊”工具。在Windows 7上,模糊工具比在Vista上发挥了更彻底的作用。Ladd说,自 Vista以来,SDL禁止的API显著增多,封锁了不少有潜在利用可能的攻击途径。

在SDL的此阶段,缓解唱的是主角。缓解指的是那些帮助开发人员对抗利用薄弱环节进行黑客攻击的企图的技巧。据Ladd所说,诸如防止利用user mode heap corruption vulnerabilities 、对safe unlinking in the kernel pool的完整性检查以及对Internet Explorer 8(Windows 7的默认浏览器)的XSS过滤器的过滤器改良等深度防御技巧在Windows 7均首次亮相。

4. 验证。软件现在在功能上已经完备,可做测试。 对于安全人员而言,“安全贯彻” (对,这就是此阶段的官方名称)正在展开,因为他们的工作已从设计阶段时找出的高度重点的攻击表面扩展到其他一切。现在没有任何代码是安全的,安全团队不仅查看新材料,而且也查看从软件早期版本里再次使用的保留代码。渗透测试也正在进行。不久就将面对普通老百姓,团队在准备一份在软件发布之后的安全应对计划。在最终的安全审核之后……

5. 软件发布,随后在整个产品使用期提供……

6. 支持和服务,包括必要的补丁和校正。

微软早在2002年就发起了可信赖计算计划,开始认真地革新他们的安全作风。不过,有功者理当表扬:与其说 SDL是微软总部的一次思维创新的结果,不如说是微软公司内外发展出来的行之有效的安全流程的集合。它不仅适用客户端/服务器应用程序的开发(这对微软总部而言已是轻车熟路),也适用于基于网络或云端的应用程序。

为了回馈更大的安全社区(并鼓励第三方开发人员在开发软件时追求相同严格的安全意识作风  — 你在听吗,亚当? ),公司对这一流程的规则始终非常公开,称其为“非专利”信息。为了这一目的,时常更新的 SDL 流程指南 可在网上查阅。Ladd 所说的“一大堆” SDL 工具也可免费下载,包括构建验证工具 BinScope Binary Analyzer;将缺陷类选过程自动化的!exploitable;以及最新的威胁建模工具。像基本的fuzzer这类其他工具在 SDL Tools Repository里也能找到。此外,还有一个免费的培训工具包 ,包括多个“Virtual Labs” 示范,对新手尤为合适。

SDL 是一个有生命的流程,始终处于审阅和修改之中。那么,Windows 7 团队在开发过程中学到了什么? 团队遇见了什么令人吃惊和意想不到的事?Ladd 说,“完全没有意外的新发现,这对SDL而言是最理想的体验。”对大多数安全观念强的技术人员来说,这也是学习和了解一个崭新的操作系统的最理想体验。

FM IT专家意见(IT EXPERT VOICE)为 戴尔®联邦传媒 之合作。 隐私权声明