星期五, 九月 16, 2005

程序的安全性

应用程序会随时间而演进,新的功能会逐次被加入、错误也逐一被修正,而安全性威胁也会逐步演进。因此,您必须定期对安全性威胁和应用程序安全性服务进行检视,以确保应用程序不致于暴露在不必要的风险下。
维持警觉
下面列出您可采取的步骤,以维持应用程序之安全性:
加入安全性批注至您的原始程序代码
在设计和撰写程序代码的阶段中,您会做出许多关于应用程序安全性实作 (Implementation) 的决定。未来继续维护您原始程序代码的开发人员,不一定完全了解这些决定或原始程序代码修改部分的枝节。您可以在原始程序代码内加入批注,说明您的假设、程序代码意图和任何外部安全性措施 (例如档案的存取控制清单,即 ACL 和验证方法等) 的相依性,减轻此风险。
回归测试错误修复
无可避免地,在应用程序发行之后,仍然会发现一些错误。而当您修复某个错误后,也可能会导致更多之前被修复错误遮蔽的错误浮现。在发行错误修复之前,请进行应用程序回归测试,以确保该修复不会损害到应用程序的安全性。
回归测试平台变更
软件错误难以避免,同样地,执行应用程序的平台以及软件互动的应用程序也免不了会有错误。在修补平台或是自用应用程序以外的应用程序时,请务必了解这些变更对应用程序的影响。例如,您的应用程序可能不经意地倚赖平台先前的不良行为 (Broken Behavior),做为安全性设计的一部份。
监视支持要求
您会在设计应用程序时假设其使用方法。若要验证这些假设,您应监视支持要求和讨论区,以评估真实世界的使用情况。例如,您的应用程序可能会要求使用者所不愿意或无法实作的安全性设定,这将会导致支持问题的增加。
开发良好的稽核原则
好的稽核原则会要求您记录系统上发生的重要事件并且适时对它们进行评估。适时的审核追踪记录有助于找出加害者。延迟的审核追踪记录通常则会延误修复安全性问题时机,加害者早已完成所有的破坏性动作。
监视找不到的错误
系统监视程序中的 Web 服务效能对象包含显示找不到的错误的计数器。找不到的错误是指无法满足客户端要求,因为它们包括了一个对不存在之网页或档案的参考(这些错误有时是以其 HTTP 状态码 404 来描述)
许多找不到错误的发生是由于网页和档案已被删除或移往别处,但是有些则是由于使用者尝试存取未经授权的文件所造成 (这些「禁止存取」错误的程序代码编号为 403。在大多数的浏览器上,403 错误与 404 错误的报告方式大多不同 ,且不会出现在 Not Found Errors/sec 计数器结果中)
您可以使用 Web 服务对象的 Not Found Errors/sec 计数器,追踪服务器上找不到错误的发生率。另外一种作法是,设定系统监视程序警示,在找不到错误发生率超过临界值时,通知系统管理员处理。
找不到错误的增加,有可能表示移动档案却没有更新档案连结。不过也有可能是表示尝试存取受保护的文件 (例如使用者清单和档案目录) 失败。
请勿储存机密
如果可能,请尽量避免储存敏感性信息。机密数据的管理通常是设计安全系统时,最困难的部份之一。
鼓励使用最小权限
请将您的应用程序设计成需要最少量的存取权限。以此作法,可减少攻击者利用您的应用程序做为平台,对任一计算机进行攻击之可能性。同时,若您的应用程序要求使用者以高优先权限账户登入,例如具有管理员权限的账户,这可能让使用者暴露于其它的攻击途径。
评估潜在损坏
Microsoft 在评估潜在的安全性弱点时,使用 DREAD 这个前缀缩写字。此前缀缩写字描述下列因素:
潜在损坏 (Damage Potential)
重现性 (Reproducibility)
可擅用性 (Exploitability)
受影响的使用者 (Affected Users)
发现性 (Discoverability)
每个因素的等级可从 1 (最低) 10 (最高)。根据每个因素的分数,可计算出该弱点的总分,并做出主观性判断。最后,是否修复它的决定也取决于其它难以具体化之因素,例如对于声誉的影响。
潜在损坏
若此弱点遭擅用,最坏的结果会是什么?
注意???下列的等级为范例定义。
  1. 10 - 攻击者完全控制计算机。

  2. 2 9 - 每个数字代表递增的破坏程度。

  3. 1 - 攻击者仅能读取或写入少数不造成损害的信息 (如果有的话)
重现性
利用此弱点重现攻击的难易度?
  1. 10 - 每次攻击都会成功。

  2. 2 9 - 每个数字代表递增的重现性难易度。

  3. 1 - 重复测试但发生次数极少。
可擅用性
根据此弱点进行攻击的难易度?
  1. 10 - 只需要极少甚至不需要知识或时间。

  2. 2 9 - 每个数字代表递增的可擅用性难易度。

  3. 1 - 需要大量的人物力和财力。
受影响的使用者
可能受此弱点影响的使用者百分比?
  1. 10 - 91-100%

  2. 2 9 - 每个数字代表递增的受影响使用者百分比 (例如 210-19%320-29%,其余依此类推)

  3. 1 - 0-9%
发现性
找出此弱点的难易度?
  1. 10 - 有大量公开发行的信息。

  2. 2 9 - 每个数字代表递增的公开程度。

  3. 1 - 相当隐密,几乎没有人知道它的存在。
请参阅
安全性