DevSecOps调研笔记
一、DevSecOps产品
国内做的比较好的:
- 悬镜安全:https://www.xmirror.cn/
- 默安科技:https://www.moresec.cn/
- 开源网安:https://www.seczone.cn/
容器安全:
- 小佑科技:https://www.dosec.cn/index.html
- 青藤:https://qingteng.cn/fc-home.html
基于DevOps,结合security的产品:
- 极狐GitLab:https://about.gitlab.cn/solutions/dev-sec-ops/
- 杰蛙XRAY:https://www.jfrogchina.com/xray/
synopsys(在gartner report中排第一的公司):https://www.synopsys.com/
gartner report(2021年):https://www.gartner.com/doc/reprints?id=1-267XOMMA&ct=210601&st=sb
二、DevSecOps技术工具
1.静态应用程序安全测试(Static Application Security Testing)
静态应用安全测试又称白盒测试,是指在不运行程序本身的情况下,仅通过分析程序的语法、结构、过程、接口等来检测程序的安全性。一般可用于DevOps流程的编码、构建与测试环节。
优势:代码检查更具有可视性、能精确定位到漏洞位置
劣势:误报率高、对集成系统中产生的漏洞难以检测
开源工具:
- Semgrep是一款基于Facebook开源SAST工具pfff中的sgrep组件开发的开源SAST工具,目前由安全公司r2c统一开发维护,提供强于grep工具的代码匹配检索能力
- CodeQL是Semmle公司推出的一款静态代码分析工具(以前叫SemmleQL),后被Github收购,并成立了Security Lab支持Github的开源代码安全检查能力。
- SonarQubesonar是一款静态代码质量分析工具,支持25种以上的语言,而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告。
2.动态应用程序安全测试(Dynamic Application Security Testing)
动态应用安全测试又称黑盒测试,在无需了解程序源代码与逻辑结构的情况下,对程序进行安全测试。一般可用于DevOps流程的测试与发布环节。
优势:攻击者视角测试更贴近现实情况、无需源代码
劣势:覆盖面较小、一定程度依赖人员安全能力、无法定位漏洞具体位置
开源工具:
- https://github.com/zaproxy/zaproxy
- https://github.com/andresriancho/w3af
- https://github.com/sullo/nikto
3.交互式应用程序安全测试(Interactive Application Security Testing)
交互式应用安全测试又称灰盒测试,结合了SAST和DAST技术的优点,能够模拟验证代码中的已知漏洞是否确实能够在运行的环境中被攻击者使用。通过部署探针或者流量监测等方式,持续分析程序测试时的实时数据,发现程序中存在的漏洞。
优势:易于集成CI/CD、低误报高检出、低安全专家投入
劣势:插桩模式难以检测业务逻辑漏洞、流量模式的数据容易被污染降低检测效果
4.移动应用安全测试(Mobile Application Security Testing)
移动APP同样会存在安全漏洞,因此需要进行移动应用安全检测。
开源工具:
5.模糊测试(Fuzz Testing)
模糊测试是一种介于手工渗透测试与完全自动化测试之间的安全性测试。通过将准备好的随机或者半随机生成的数据输入程序,通过监视程序的异常状态,发现潜在漏洞。
开源工具:
-
https://github.com/google/clusterfuzz (Scalable fuzzing infrastructure)
-
https://github.com/google/oss-fuzz (continuous fuzzing for open source software)
-
https://github.com/google/AFL (A security-oriented fuzzer)
-
https://github.com/google/honggfuzz (Security oriented software fuzzer)
-
https://github.com/ffuf/ffuf (Fast web fuzzer written in Go)
- https://github.com/xmendez/wfuzz (Web application fuzzer)
6.软件成分分析(Software Composition Analysis)
在项目开发过程中会大量使用开源组件,而调查显示,开源组件存在大量的安全隐患,导致应用也存在安全风险,因此需要对开源组件进行安全扫描。
开源工具:
7.运行时应用自我保护(Runtime Application Self-Protection)
不同于传统的应用外的安全措施(如外层的防火墙),它将安全能力像疫苗一样注入到应用程序中并与之融为一体,能够自动化的实时监控、检测或阻断实际产生的安全攻击,使应用程序具备自我保护能力。
开源工具:
- 字节开源的方案:https://github.com/bytedance/Elkeid
- 百度开源的方案:https://rasp.baidu.com/
- 火线洞态IAST:https://github.com/HXSecurity/DongTai-agent-java
8.容器安全
随着容器技术的兴起,越来越多的应用选择容器部署,与此同时,容器的安全性问题也受到了越来越广泛的关注。容器镜像通常是来自docker hub或阿里云等提供的第三方镜像仓库,然而相关报告显示,无论是社区镜像还是官方镜像,都存在很多高危漏洞,如果基础镜像有安全漏洞,那么容器运行存在较大的安全风险。
开源工具:
- https://github.com/quay/clair
- https://github.com/aquasecurity/trivy
- https://github.com/anchore/grype
- https://github.com/cilium/cilium
三、漏洞库
NVD:https://nvd.nist.gov/products/cpe
CNNVD:http://www.cnnvd.org.cn/web/xxk/xmlDown.tag
四、参考文章
“安全需要每个工程师的参与”-DevSecOps理念及思考
https://security.tencent.com/index.php/blog/msg/150
安全左移理念,腾讯DevSecOps如何实践?
https://security.tencent.com/index.php/blog/msg/191
Fuzzing平台建设的研究与设计
https://security.tencent.com/index.php/blog/msg/143
代码安全指南
https://github.com/Tencent/secguide
基于开源技术打造DevSecOps工具链
https://mp.weixin.qq.com/s/8chG8vobyurO4n_0bLa9-A
百度的 DevSecOps 实践
https://www.infoq.cn/article/jfQGtKBHWZwA8HH2r8Zz