项目概述
本文档为xx安全团队针对xx项目生命周期给出的安全评估系统方案,意义在于SDL使项目在设计,代码开发,测试中与安全相关的漏洞减到最少和后续安全工作的进行。
本文档内容仅覆盖项目生命周期安全控制的实现方式,不包括项目生命周期安全控制平台实现后的具体运营。
SDL:安全开发生命周期(SDL)即SecurityDevelopment Lifecycle,是安全软件开发生命周期,是一套完整的,面向Web和APP开发厂商的安全工程方法。帮助软件企业降低安全问些,提升软件安全质量;
常规的项目开发流程,如下:
项目开发中存在的风险点,如下:
风险 |
风险描述 |
项目收集和分析,设计阶段未经过安全需求评审 |
由于未经过安全需求评审,项目在设计初期采用旧框架、流程设计不合理,未做任何防护机制导致项目上线后被恶意攻击者攻击,删除,资料或者代码被盗等危害 |
项目编码阶段未按照代码安全规范进行编写 |
由于未按照代码安全规范进行编写,项目在开发中使用高危函数,并对输入和输出语句未作任何处理和检测等导致项目上线后被恶意攻击者攻击,删除,资料或者代码被盗等危害 |
项目测试阶段未经过安全测试直接发布 |
由于未经过安全测试直接发布,项目中一些设计不合理或者配置不合理的地方被恶意攻击者攻击;导致项目删除,资料或者代码被盗等危害 |
项目线上阶段发布后对一些关键位置,框架等不进行维护和更新 |
由于项目发布后对一些关键位置,框架等不进行维护和更新,导致攻击者利用最新的漏洞攻击;导致项目删除,资料或者代码被盗等危害 |
项目生命周期阶段 |
安全需求 |
项目收集和分析,设计阶段未经过安全需求评审 |
安全培训,需求分析 |
项目编码阶段未按照代码安全规范进行编写 |
安全编码规范, 代码审计 |
项目测试阶段未经过安全测试直接发布 |
黑白盒测试 |
项目线上阶段发布后对一些关键位置,框架等不进行维护和更新 |
黑白盒测试检查确认 应急响应,BUG跟踪 |
控制手段 |
描述 |
安全培训 |
推广安全编程意识 |
安全需求评审 |
如何对软件产品的风险进行评估,建立基本的安全需求;提供安全方案设计及威胁建模 |
代码安全审计 |
提供主流编程语言的安全编码规范,安全函数库以及代码审计方法 |
安全测试 |
基于威胁建模的测试设计,Fuzzing测试,渗透测试 |
应急响应 |
建立漏洞管理体系 |
安全接口 |
提供安全API接口进行防护 |
安全工单 |
建立安全工单管理体系 |
6.1.1 设计原则
安全评估系统设计核心原则:
l 攻击面最小化
l 基本隐私
l 权限最小化
l 默认安全
l 纵深防御
l 威胁建模
6.1.2 主要目标
安全评估系统主要目标:在项目开发中每个阶段提供全方位的安全服务保证项目整体安全质量,同时在安全评估系统上可直观、清晰的了解到每个项目的进度和安全状况, 并进行安全动态跟踪。
6.2.1 系统架构
安全评估系统架构图
系统采用五层架构设计:
一、展现层
Web前端:基于HTML/HTML5/Vue/CSS3开发web前端页面,兼容主流浏览器。展现层和数据层完全分离,通过跨域实现前后端数据通信。
Restful接口:基于特定业务,采用Restful标准接口,对外提供数据服务。
二、通讯层
基于HTTP/HTTPS 两种通信方式,实现前后端数据通信。
三、服务层
核心业务基于flask框架实现微服务化可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元。
四、数据层
postgresql:存储app安全扫描信息和结果信息。
mysql:存储事务性数据,以及关联性将强的数据。如,安全工单信息、项目安全流程信息等;
redis:做消息中间件,存储任务队列信息,任务结果信息。
五、执行层
主要对数据进行加工、处理,根据数据的内容执行各类事件或者任务。
6.2.2 业务架构
安全评估系统业务架构
系统业务依赖关系:
安全评估系统主要根据项目的工作流程进行设计,主要由安全评审,代码安全审计,WEB扫描,漏洞管理,安全工单,报表等模块构成;通过从需求阶段到上线运营进行安全监管,让项目每个环节的安全状态都可以达到360度的可视化,并可以动态跟踪。详细描述见工作流程和实现方案。
安全评估系统整体工作流程
安全评估系统工作流程是基于项目开发周期的每个阶段进行划分, 每个阶段存在对应的安全服务可便捷式的嵌入到流程中,从而保证安全贯穿于整个项目生命周期的每一个环节,消除上线前的安全问题,解决99%的高危漏洞。
在安全评估系统设计之初已有代码安全审计系统,web扫描系统和漏洞管理系统,所以只需要对代码安全审计和web扫描系统稍微进行修改即可接入到安全评估系统。
整体的安全评估系统分阶段进行实现,大致分为以下九个阶段:
第一阶段:完成账户管理和安全评审模块,测试
第二阶段:接入代码安全审计,完成代码安全审计模块,测试
第三阶段:接入web扫描,完成安全测试模块初期,测试
第四阶段:接入漏洞管理,完成漏洞管理模块,测试
第五阶段:完成报告管理模块,测试
第六阶段:完成工单管理模块,测试
第七阶段:完成安全规范和安全API模块,测试
第八阶段:整体测试
第九阶段:整体内部上线试运行,推广
6.4.1 账户管理实现方案
Todo
6.4.2 安全评审实现方案
安全需求流程图: todo
STRIDE威胁建模:todo
GDPR隐私保护:todo
6.4.2 代码安全审计实现方案
Sonar扫描引擎工作流程图
SonarQube执行代码扫描主要以下几个步骤:
1. 拉取服务器配置信息和规则信息
2. 对对应的代码进行正则规则匹配分析
3. 上传结果
其主要作用就是代码质量管理和安全审计,用于管理源代码的质量和安全,可以从七个维度检测代码质量通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测
6.4.2 安全测试实现方案
Web扫描引擎工作流程图
Web扫描引擎集成了WEB漏洞扫描,IP脆弱性扫描,弱口令爆破等功能。持续为公司网络资产提供安全评估状态和监控,帮助减少漏洞和业务上的风险。
6.4.3 漏洞管理实现方案
Todo
6.4.4 账户管理实现方案
Todo
6.4.5 报告管理实现方案
Todo
6.4.6 安全工单实现方案
Todo
6.4.7 安全规范实现方案
Todo
6.4.8 安全API实现方案
Todo