SDL:security development lifecycle 安全开发生命周期
微软最早提出,在软件工程中实施,帮助解决软件安全问题的办法。
培训
安全要求
质量门/bug栏
安全和隐私风险评估
设计要求
减小攻击面
威胁建模
使用指定的工具
弃用不安全的函数
静态分析
动态程序分析
模糊测试(fuzzing test)
威胁模型和攻击面评析
事件响应计划
最终安全评析(FSR)
发布/存档
SDL适用于软件开发商、瀑布式开发
SAMM适用于自主开发软件的使用者,强调高效、敏捷
SDL实战经验
1、与项目经理充分沟通,排出足够的时间
2、规范公司的立项流程,确保所有项目都能通知到安全团队,避免遗漏
3、树立安全部门的权威,项目必须由安全部门审核完成后才能发布
4、将技术方案吸入开发、测试的工作手册
5、给工程师培训安全方案
6、记录所有的安全bug,激励程序员编写安全的代码
安全功能 VS 安全的功能
开发阶段
1、提供安全的函数
将安全方案写入开发规范中,就真正地让安全方案落了地
2、代码安全审计工具
与其直接检查代码是否安全,不如检查开发者是否遵守开发规范
测试阶段
商业安全扫描器:IBM Rational Appscan、WebInspect、Acunetix WVS等
免费安全测试工具:w3af、skipfish等
skipfish:http://code.google.com/skipfish/