SDL & DevSecOps

date
Nov 23, 2021
URL
slug
devsecops
status
Published
tags
sdl
summary
前一段为了应付面试看的一些资料 随便摘抄了点东西 用来快速回忆
type
Post

什么是SDL 什么是DevSecOps

SDL

安全开发生命周期(SDL)即Security Development Lifecycle,
SDL的核心理念就是将安全考虑集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护。
从需求、设计到发布产品的每一个阶段每都增加了相应的安全活动,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。安全开发生命周期 (SDL)是侧重于软件开发的安全保证过程,旨在开发出安全的软件应用。
我理解的就是要尽量降低安全修复成本 , 出现漏洞了 在开发设计的时候就修复掉,跟正式上线后出现漏洞的修复成本是相差很多的,我理解的SDL就是要把安全集成到软件开发的所有阶段,使得安全成本得到有效降低。
 
而DevSecOps 同样我个人理解就是将安全融入DevOps的各个阶段,而它与SDL相比就是要做到自动化
 

DevSecOps from DevOps

加上了sec

那么什么是DevOps 运维开发

Dev 开发 设计 开发 测试 上线 这是一个开发周期
开发完成后,需要对程序 服务进行运维,开发与运维不是一拨人
那么此时是Dev+ops
运维是讨厌变动的
而开发就是要不断进行代码变动,产品迭代
这俩应该是很对立冲突的
怎么解决这样的一个问题
 
 

微服务

当公司的体量达到一定程度后,就需要有各类技术栈的程序员,需要对各个技术栈的程序员进行协调,好多模块都在一个大项目里面集成开发的话,会使得这个项目的体量变得很大,产品上线前需要的时间也会大大增加,而且也可能会因为某个模块的bug导致整个业务崩溃,
所以现在的思路都是要做拆分解耦,将一个大项目拆分成为一个个独立服务部署,搞一些服务器,让开发在运维写好上线规则的情况下,直接上线测试,出问题了直接调试,毕竟开发才是最懂自己代码的人
 
notion image

DevSecOps

我对这个的理解并不是很足,在实习公司写代码其实也就是我除了不做前端,其他都要写一下,体量比较小,对正规的开发流程只有本科的时候上过软件开发这门课的概念,而且时间也很久了,基本上没什么印象了,在开始找工作的时候才接触到这个词,在查的时候也知道小米也是率先从SDL转型到devsecops的。
我也看到这个概念的核心就是 安全是整个IT团队(包括开发、测试、运维及安全团队)所有成员的责任,需要贯穿整个业务生命周期的每一个环节。每个人都对安全负责,安全工作前置,柔和嵌入现有开发流程体系。 毕竟机器是按照人设计的逻辑来严格执行的,人的逻辑可能会出错,机器是很难出错的。
notion image
 
notion image
 
在整体方案中,绿色部分为安全相关的工作内容。与传统SDL不同的是,除了CD后期的安全检测,其它阶段的安全工作通常为开发团队负责或干脆实现了完全自动化。主要是将部分测试相关的安全实践通过工具化实现了自动化。
CI/CD 持续集成,持续交付
notion image
sast dast iast bug bounty sca
 
sca 软件成分分析 基础库版本识别
 
sast 静态分析
idea - code - build -deploy - manage - continuous improvement 持续改进
 
优点: 可观察性
可追溯性
合规性
 
由外部开发的工具是否可靠,
前一阵在网上就看到RaidForums 在卖国内好几大行的数据跟源码,当时以为是因为用相同的oa系统有漏洞被攻破了,最近看到新闻说是因为sonarqube存在漏洞
泄露了大量源码
还有solar winds 这种供应链攻击 也是能够对无数客户产生巨大危害。
 
 

供应链安全

 
对docker images
各种库 的劫持
apt-get brew
 
 
待物 ups
 
 
 

DAST:动态应用程序安全测试

DAST是一种黑盒测试技术,是目前应用最广泛、使用最简单的一种Web应用安全测试方法,安全工程师常用的工具如AWVS、AppScan等就是基于DAST原理的产品。
1. 实现原理
notion image
图 1:DAST原理
1)通过爬虫发现整个 Web 应用结构,爬虫会发现被测Web程序有多少个目录,多少个页面,页面中有哪些参数;
2)根据爬虫的分析结果,对发现的页面和参数发送修改的 HTTP Request 进行攻击尝试(扫描规则库);
3)通过对于 Response 的分析验证是否存在安全漏洞。

SAST:静态应用程序安全测试

SAST
超过50%的安全漏洞是由错误的编码产生的,开发人员一般安全开发意识和安全开发技能不足,更加关注业务功能的实现。想从源头上治理漏洞就需要制定代码检测机制,SAST是一种在开发阶段对源代码进行安全测试发现安全漏洞的测试方案。
1. 实现原理
notion image
图 3:SAST原理
1) 首先通过调用语言的编译器或者解释器把前端的语言代码(如JAVA,C/C++源代码)转换成一种中间代码,将其源代码之间的调用关系、执行环境、上下文等分析清楚。
2)语义分析:分析程序中不安全的函数,方法的使用的安全问题。
3)数据流分析:跟踪,记录并分析程序中的数据传递过程所产生的安全问题。
4)控制流分析:分析程序特定时间,状态下执行操作指令的安全问题。
5)配置分析:分析项目配置文件中的敏感信息和配置缺失的安全问题。
6)结构分析:分析程序上下文环境,结构中的安全问题。
7)结合2)-6)的结果,匹配所有规则库中的漏洞特征,一旦发现漏洞就抓取出来。
8)最后形成包含详细漏洞信息的漏洞检测报告,包括漏洞的具体代码行数以及漏洞修复的建议。

IAST 交互式应用程序安全测试 结合静态跟动态

IAST交互式应用安全测试技术是最近几年比较火热的应用安全测试新技术,曾被Gartner咨询公司列为网络安全领域的Top 10技术之一。IAST融合了DAST和SAST的优势,漏洞检出率极高、误报率极低,同时可以定位到API接口和代码片段。
1. 实现原理
IAST的实现模式较多,常见的有代理模式、VPN、流量镜像、插桩模式,本文介绍最具代表性的2种模式,代理模式和插桩模式。
代理模式,在PC端浏览器或者移动端APP设置代理,通过代理拿到功能测试的流量,利用功能测试流量模拟多种漏洞检测方式对被测服务器进行安全测试。
插桩模式,插桩模式是在保证目标程序原有逻辑完整的情况下,在特定的位置插入探针,在应用程序运行时,通过探针获取请求、代码数据流、代码控制流等,基于请求、代码、数据流、控制流综合分析判断漏洞。插桩模式具体实现有2种模式,Active 插桩和Passive 插桩。
代理模式,在PC端浏览器或者移动端APP设置代理,通过代理拿到功能测试的流量,利用功能测试流量模拟多种漏洞检测方式对被测服务器进行安全测试。
插桩模式,插桩模式是在保证目标程序原有逻辑完整的情况下,在特定的位置插入探针,在应用程序运行时,通过探针获取请求、代码数据流、代码控制流等,基于请求、代码、数据流、控制流综合分析判断漏洞。插桩模式具体实现有2种模式,Active 插桩和Passive 插桩。

在DevSecOps中威胁的来源

 
采用过期或存在漏洞的第三方组件
敏感数据泄露
docker images
k8s 设置
 
 

© Somet1mes 2021 - 2024