Concept of SSDLC
SSDLC即 S(Secure)-SDLC
就是将安全活动引入SDLC的各个阶段
主要的安全活动分为以下几个阶段:
风险评估 威胁建模 安全编码 安全评估
风险评估
风险评估的步骤
风险评估的第一步是假设该应用易受攻击,列出应用易受攻击的影响因子。
第二步是进行风险评估,如果攻击者成功攻击了该软件,则包括最坏情况的因素,例如如果被攻击成果会被盗取的数据的价值,以及被攻击利用的复杂性程度
最后一步是确定目标的可访问性。确定目标是在网络上接受请求还是仅在本地访问中接受请求,是否需要建立连接的身份验证,或者是否有人可以发送请求。
风险评估的分类
1.Qualitative Risk Assessment 定性风险评估
这是最常见的风险评估类型,将风险分为 "低","中","高",每个级别都有不同的优先级,而“高”具有最高优先级
风险 = 严重性 x 可能性
Quantitative Risk Assessment 定量风险评估
使用数值衡量风险,而不是 "低","中","高"三个等级
例如,如果bug影响业务关键服务(身份验证服务,付款基础架构等),则将分配5分
威胁建模
威胁建模最好在代码编写前进行,即在设计阶段
威胁建模是一个结构化的过程,用于识别潜在的安全威胁并确定减轻攻击的技术,从而保护已经被归类为有价值或较高风险的数据或资产
有多种威胁建模的方式,比如STRIDE,DREAD,PASTA
STRIDE
https://learn.microsoft.com/zh-cn/azure/security/develop/threat-modeling-tool-threats
STRIDE是微软开发的用于威胁建模的一套方法论,从攻击者的角度,把威胁划分成6个类别,分别是Spoofing(欺骗)、Tampering(篡改)、Repudiation(否认性)、InformationDisclosure(信息泄露)、Dos(拒绝服务)和Elevation of privilege (特权提升)
DREAD
DREAD是原来微软的风险评估威胁系统的一部分,但在实际使用过程中有时评分十分不准确,比如可复现性很多场景下不重要,所以微软在2008年弃用了此模型
DREAD提供了5个维度,进行威胁评级,每个维度0-10分。通过最后的评分确定威胁的严重程度
Damage 危害程度
风险会造成怎样的危害?包括:系统受危害程度,泄露信息的数据敏感性,资金资产损失,公关法律风险。
0:无损失 5:一般损失 10:巨大损失
Reproducibility 可复现性
重现攻击是否容易,风险是否可以稳定复现。
0 :管理员也难以复现。 5:授权用户需要复杂步骤。 7 :身份验证用户可通过简单步骤复现。 10 :只是一个Web浏览器即可复现。
Exploitability 利用难度
需要多少成本才能实现这个攻击
0 = 高级程序和网络知识,以定制的或高级攻击工具
5 = 互联网上存在恶意软件,此漏洞可被轻易地利用和可用的攻击工具
10 = 仅仅一个web浏览器就可以
Affected Users 影响用户
影响多少用户
0 = 没有
5 = 一些用户,但不多
10 = 所有用户
Discoverability 可发现性
0 = 非常困难,甚至不可能; 需要源码或者管理员权限
5 = 可以通过猜测或者监测网络活动来发现
9 = 错误的细节已经在公共平台上披露,可以用搜索引擎轻易发现
10 = 信息在web浏览器的地址栏或者表单里可见。
PASTA
PASTA技术专注于帮助团队根据业务优先级评估威胁。它首先确定业务目标和支持它们所需的技术资源。然后,团队确定哪些威胁可能会影响这些资源——进而,他们会发现可能危及业务优先级的威胁。
定义目标
定义技术范围
分解应用程序
执行威胁分析
检测漏洞
枚举攻击
执行风险和影响分析
安全编码
SAST
SAST表示静态应用程序安全测试,这是一种直接分析源代码的白盒测试方法
SAST通常在编译代码之前分析并扫描应用程序
SCA
SCA用于扫描依赖的安全漏洞,帮助开发团队跟踪和分析带入项目的任何开源组件
DAST
DAST表示动态应用程序安全测试,这是一种在运行时发现漏洞的黑盒测试方法
IAST
IAST是指交互式应用程序安全测试,该测试分析应用程序运行时的安全漏洞代码
SAST在不运行应用程序的情况下对代码进行工作。
DAST可以与正在运行的应用程序一起工作,但不能接触到代码。
IAST在一个正在运行的应用程序中与代码一起工作
相当于是DAST和SAST结合的一种互相关联运行时安全检测技术。IAST可以像SAST一样看到源代码,也可以像DAST一样看到应用程序运行时的执行流。 IAST不仅拥有安全测试上的能力优势,也更容易与DevOps紧密结合
RASP
RASP代表运行时应用自我保护。 RASP是集成到应用程序中的运行时应用程序,用于分析内外流量以及最终用户行为模式,以防止安全攻击
安全评估
进行漏洞评估和渗透测试