2010-03-31 132 views
9

我在微软(http://microsoft.com/sdl)的一个名为安全开发生命周期(SDL)项目的项目上工作 - 简而言之,它是一组产品组在发布产品以帮助提高安全性之前必须使用的一套实践。您采用哪些安全软件开发实践?

在过去的几年里,我们发布了大量的SDL文档,因为客户需要更多关于我们正在做什么的信息。

但我想知道的是:

  1. 你在你的组织中如何帮助提高产品的安全性?
  2. 什么可行?什么不行?
  3. 你是怎么让管理层同意这项工作的?

感谢。

+7

我认为这是一个好人的好问题。微软的软件被部署到大量的用户,并且在安全性方面趋于好转(例如,比较IIS 4到IIS 7)。我认为最近最近的攻击焦点集中在Adobe Reader上,这是对攻击微软产品变得越来越难的一种承认。微软决不是完美的,但他们已经吸取了一些教训,并且正在变得更好。 – 2010-03-31 21:48:01

+0

@Jeff Moser那么在pwn2own的Windows 7上,新的IE 8 0天怎么样?当他们的软件不断被破坏时,微软说的毫无意义。我看到的只是Exploit之后的Exploit,绝对没有任何改变。 – rook 2010-04-05 23:00:26

+2

@ TheRook:只要您的产品被数亿用户使用,您就会成为目标。安全性很难,需要大量的纵深防御策略。这是一场非常不对称的战斗,你必须防御一切,攻击者只需要找到一个弱点。此外,有了这样一个广泛的用户社区,你必须做很多回归测试来验证修复。这很难,我赞扬像迈克尔这样诚实的人。 让我们抛开火焰战争的倾向,通过指出良好的实践并帮助社区来公平地解决这个问题。 – 2010-04-06 14:48:18

回答

0

我们认为在我们编码之前。奇怪的是,它避免了许多错误,包括那些可能被敌方利用并且此后被称为“安全漏洞”的错误。

诀窍的一部分是不让任何人靠近键盘,除非他拥有丰富的经验和专业知识。

+0

更多的经验并不总是更好。例如,悬挂指针攻击甚至还没有5年,但它们被用来在Windows 7下利用IE。一位熟悉缓冲区溢出的高级程序员很可能会错过新的开发技术。 – rook 2010-03-31 21:37:14

+0

这就是为什么防御非常重要 - 随着新的技术不断创建,你永远无法100%获得100%的代码。 – 2010-04-08 05:44:51

2

老实说,读your book是一个好的开始。 :-)

在回答你的问题:

  1. 加密是我的爱好,我有时在博客(例如在TLSAES)。在编写我自己的AES实现之后,我学会了足够的知道,除非有合理的疑问,我绝不应该使用自己的实现,而是使用CryptoAPI和OpenSSL家伙编写的实现。

    • Code reviews其中擅长安全问题的人被标记为需要。
    • 在现场举办班级讲座,提高对书中提及的问题的认识以及讨论新问题的内部邮件列表。
    • 几个人听Security Now podcast以了解哪些类型的问题在哪里以及受到什么攻击。这间接影响了设计。
  2. 除了现场课程和购买代码审查工具,这些都不需要管理层的批准。

+0

你现在对安全有什么看法?我发现他们使用“更安全”这个短语足以让我认为吉布森专注于绝对主义而不是风险管理。 – 2010-03-31 22:28:12

+0

我希望它能更深入,但很容易听到通勤。史蒂夫比我更偏执,但我想没关系。 – 2010-03-31 23:55:44

1

我是独立mac开发人员,也是平台安全传播者:我是Wrox发布的Pro Cocoa Application Security的作者。在这本书中,我倡导了我自己使用的安全开发技术:它基于Swiderski和Snyder威胁建模,但有两个变化。我通过考虑哪些入口点访问哪些资产而不使用DFD来减轻重量。我还更加关注识别用户和滥用者,我认为这使它更适用于收缩包装软件。

至于工具支持方面,我使用的Xcode静态分析仪(基于铛),但发现它不能检测某些常见的漏洞。我做了文件错误:-)。我也总是使用gcc _FORTIFY_SOURCE宏。有没有好的Mac风险分析工具,但我正在努力...... ;-)

我已经在Mac会议和播客的Mac开发安全发言,并获得了大量的反馈,如果你想要我澄清我所说的或对社区反馈感兴趣的任何内容,请在评论中提问。私人问题欢迎(尽管我宁愿留在论坛上):iamleeg at securemacprogramming dot com。