SDL流程
SDL流程 https://www.cnblogs.com/iAmSoScArEd/p/14183928.html ---我超怕的
如果在寻找传统SDL流程的互联网同学,这里推荐大家了解一下DevSecOps,更加适合现在的一个代码、功能、上线的版本迭代。可以更好的替代传统SDL。
项目目标
(1)制定面向Web和APP开发企业的安全开发流程
制定动态的安全开发流程,对安全活动及活动要求进行分级,不同类型的软件,可以根据产品的风险及可用的投入资源来确定开发过程中要执行的安全活动,明确活动的输入,输出,执行者及依赖关系;
(2)制定及开发安全基础培训课程
制定安全培训体系,确定不同的角色需要接受的培训内容及培训的周期;开发基础性的培训课程;
(3)根据实践经验,输出各个安全活动的方法指导及模板,主要的安全活动有:安全风险评估、设计Review、威胁建模、基于威胁建模的测试
(4)制定WEB应用/移动应用安全设计指南
(5)制定安全编码(C/C++、JAVA、PHP,C#)
(6)将OWASP现有项目,如开发指南、测试指南融合到软件全开发体系中;
流程
培训:提供安全培训体系,包含安全意识培训,安全基础知识培训,安全开发生命周期流程培训和安全专业知识培训;
需求阶段:如何对软件产品的风险进行评估,建立基本的安全需求
设计阶段:提供安全方案设计及威胁建模
实现阶段:提供主流编程语言的安全编码规范,安全函数库以及代码审计方法
测试阶段:基于威胁建模的测试设计,Fuzzing测试,渗透测试
发布/维护阶段:建立漏洞管理体系
软件开发开始前
安全培训:主要是告诉开发安全是什么、安全要做什么、安全怎么做的。可选的一些主题,如”渗透测试方法“、”渗透测试工具使用“、”某种语言的安全编码规范“等。
需求分析阶段
安全编码规范----参与需求分析会议,了解需求,针对需求拟定相应的安全编码规范。
设计阶段
各方案数据流图----要求开发提供数据流图、设计文档,对各方案进行安全评审,发现业务逻辑漏洞。
编码阶段
静态代码审计(SAST)----使用Fortify、Sonarqube等工具对代码进行扫描,一方面理解代码是否按设计实现,另一方面看是否有存在问题的地方。注意静态代码扫描误报一般会比较大要注意先自己确认,而不要一把就给开发。
测试阶段
第三方组件列表----要求开发整理使用到的的第三方组件列表,作为运维阶段的输入。主要包括组件名称、组件官网、当前使用组件版本等列。
端口矩阵列表----要求开发整理端口矩阵列表。主要包括进程名、运行用户、监听IP、监听端口等列。
渗透测试----对系统进行手工渗透测试。
白盒审计----对代码进行安全审计(扫描)。
web扫描----使用AWVS等扫描器对web进行扫描,确保别人使用这些通用工具也扫不出什么问题。
上线阶段
基线扫描----自行编写基线规范检测程序,在上线时要保证主机和服务都符合基线规范。可参考“安全基线自动化扫描、生成报告、加固的实现(以Tomcat为例) ”。
网络扫描----使用Nessus等网络扫描器对主机进行扫描,确保服务器上运行的服务软件没有什么重大漏洞。
运维阶段
第三方组件最新版本跟踪----在提供的第三方组件列中中添加最新版本一列,编写自动追踪脚本每次运行就可以在“最新版本”列显示最新版本。可参考“Python3第三方组件最新版本追踪实现 ”。
第三方组件CVE跟踪----编写脚本,每天爬取更新的CVE并筛选出产品使用的所有第三方组件的CVE。。
应急响应中心----包括SRC邮箱、SRC网站。