精选最佳 DevSecOps 资源和工具。
DevSecOps 是 DevOps 运动的延伸,旨在通过以开发人员为中心的安全工具和流程,将安全实践引入开发生命周期。
欢迎贡献。通过拉取请求添加链接或创建议题以开始讨论。
目录
资源
文章
- 我们的员工安全培训方法 - Pager Duty - 在组织内进行安全培训的指南。
- DevSecOps:将安全性置于 DevOps 流程的核心 - Spacelift - 这篇文章解释了 DevSecOps 的目标、优势以及 DevSecOps 生命周期的概貌。
书籍
- Alice 和 Bob 学习应用安全 - Tanya Janca - 一本易于理解且全面的资源,适合任何希望从系统开发生命周期开始就将最佳安全实践纳入软件开发的人。
社区
- DevSecCon - Snyk - 一个运营会议、博客、播客和 Discord 的社区,专注于 DevSecOps。
- TAG 安全 - 云原生计算基金会 - TAG 安全促进合作,发现并产生资源,为云原生生态系统中的运营商、管理员、开发人员和最终用户提供安全访问、策略控制和安全保障。
会议
- AppSec Day - OWASP - 由 OWASP 举办的澳大利亚应用安全会议。
- DevSecCon - Snyk - 由 Snyk 运营的 DevSecOps 会议网络。
通讯
- Shift Security Left - Cossack Labs - 面向安全意识开发人员的免费双周刊,涵盖应用安全、安全架构、DevSecOps、密码学、事件等对构建者(在较小程度上也包括破坏者)有用的内容。
播客
- Absolute AppSec - Seth Law & Ken Johnson - 讨论与应用安全相关的时事和特定主题。
- Application Security Podcast - Security Journey - 与行业专家就特定应用安全概念进行的访谈。
- BeerSecOps - Aqua Security - 打破开发、安全和运维之间的壁垒,讨论跨越这些领域的主题。
- DevSecOps 播客系列 - OWASP - 与思想领袖和从业者讨论如何将安全性整合到开发生命周期中。
- The Secure Developer - Snyk - 讨论软件开发人员的安全工具和最佳实践。
安全开发指南
- 应用安全验证标准 - OWASP - 一个安全需求和控制框架,帮助开发人员设计和开发安全的 Web 应用程序。
- 编码标准 - CERT - 一套适用于 C、C++、Java 和 Android 开发的安全开发标准集合。
- 安全软件开发基本实践 - SAFECode - 在整个软件开发生命周期中实施关键安全开发实践的指南。
- 主动控制 - OWASP - OWASP 列出的每个软件开发项目中都应该实施的十大控制措施。
- 安全编码指南 - Mozilla - 包含安全 Web 应用程序开发的具体安全开发标准的指南。
- 安全编码实践快速参考指南 - OWASP - 用于验证是否遵循安全开发标准的清单。
安全开发生命周期框架
- 安全内建成熟度模型(BSIMM) - Synopsys - 通过观察和分析领先软件安全计划的数据创建的软件安全框架。
- 安全开发生命周期 - Microsoft - 作为安全开发生命周期框架的工具和实践集合。
- 安全软件开发框架 - NIST - 一个由实践、任务和实施示例组成的安全开发生命周期框架。
- 软件保障成熟度模型 - OWASP - 用于衡量和改进安全开发生命周期成熟度的框架。
工具链
- 云安全和 DevSecOps 最佳实践 以及 保护 Web 应用技术(SWAT)清单 - SANS - 一张海报,包含保护 Web 应用技术(SWAT)清单、SANS 云安全课程、云安全十大要点、Kubernetes 12 大威胁和安全 DevOps 工具链。
- DevOps 工具周期表 - XebiaLabs - 按工具功能分类的 DevSecOps 工具集合。
培训
- 应用安全教育 - Duo Security - 由 Duo 应用安全团队创建的培训材料,包括入门和高级培训演示以及实践实验。
- Cybrary - Cybrary - 基于订阅的在线课程,设有专门的网络安全和 DevSecOps 类别。
- PentesterLab - PentesterLab - 动手实验,用于理解和利用简单和高级的 Web 漏洞。
- 实用 DevSecOps - Practical DevSecOps - 通过最先进的基于浏览器的实验室,向行业专家学习 DevSecOps 概念、工具和技术。
- SafeStack - SafeStack - 为软件开发团队设计的安全培训,适合个人和小团队以及大型组织。
- Secure Code Warrior - Secure Code Warrior - 游戏化和动手实践的安全开发培训,支持课程、评估和竞赛。
- SecureFlag - OWASP - 为开发人员和构建/发布工程师提供的动手安全编码培训。
- 工程师安全培训 - Pager Duty - PagerDuty 创建并开源的演示文稿,为软件工程师提供安全培训。
- 面向所有人的安全培训 - Pager Duty - PagerDuty 创建并开源的演示文稿,为员工提供安全培训。
- Semgrep 学院 - Semgrep - 免费的点播课程,涵盖 API 安全、安全编码和应用安全等主题。
- Web 安全学院 - PortSwigger - 一套学习和利用常见 Web 漏洞的材料和实验。
- WeHackPuple - WeHackPurple - 教授应用安全理论和实践技术课程的在线课程。
维基
- DevSecOps 中心 - Snyk - 介绍 DevSecOps 的关键概念、流程和技术。
- SecureFlag 知识库 - OWASP - 软件漏洞及其预防方法的信息库。
工具
依赖管理
开源软件包可以通过允许开发人员实现功能而无需编写所有代码来加快开发过程。然而,开源代码也带来了开源漏洞。依赖管理工具通过识别和更新具有已知漏洞的包来帮助管理开源包中的漏洞。
- Deepfence ThreatMapper - Apache v2 许可,功能强大的 Kubernetes、虚拟机和无服务器运行时漏洞扫描器。
- Dependabot - GitHub - 自动扫描 GitHub 仓库中的漏洞,并创建合并修复依赖项的拉取请求。
- Dependency-Check - OWASP - 使用命令行界面或构建服务器插件扫描依赖项中公开披露的漏洞。
- Dependency-Track - OWASP - 监控多个项目中易受攻击的依赖项的数量和严重程度随时间的变化。
- JFrog XRay - JFrog - 对存储在 JFrog Artifactory 中的制品进行安全和合规性分析。
- NPM Audit - NPM - 内置于 npm CLI 中的 Node 包易受攻击包审计。
- Renovate - WhiteSource - 使用 CLI 或 Git 仓库应用程序自动监控和更新多个框架和语言的软件依赖项。
- Requires.io - Olivier Mansion & Alexis Tabary - 针对 Python 项目的自动易受攻击依赖项监控和升级。
- Snyk Open Source - Snyk - 使用 Snyk 专用漏洞数据库进行自动易受攻击依赖项监控和升级。
动态分析
动态分析安全测试(DAST)是一种黑盒安全测试形式,安全扫描器与应用程序的运行实例进行交互,模拟恶意活动以发现常见漏洞。DAST 工具通常用于渗透测试的初始阶段,可以发现跨站脚本、SQL 注入、跨站请求伪造和信息泄露等漏洞。
- Automatic API Attack Tool - Imperva - 根据 API 规范对 API 执行自动安全扫描。
- BurpSuite Enterprise Edition - PortSwigger - BurpSuite 的 Web 应用程序漏洞扫描器广泛应用于渗透测试,经过修改可与 CI/CD 集成并对多个 Web 应用程序进行持续监控。
- Gauntlt - Gauntlt - 一个行为驱动开发框架,使用常见安全工具运行安全扫描并测试输出,使用 Gherkin 语法定义。
- Netz - Spectral - 使用 zgrab2 等工具发现互联网范围内的错误配置。
- RESTler - Microsoft - 基于同行评审研究论文的有状态 RESTful API 扫描器。
- SSL Labs Scan - SSL Labs - SSL / TLS 配置问题的自动扫描。
- Zed Attack Proxy (ZAP) - OWASP - 开源 Web 应用程序漏洞扫描器,包括用于 CI/CD 集成的 API。
基础设施即代码分析
基础设施即代码允许应用程序可靠地部署到一致的环境中。这不仅确保基础设施得到一致的加固,还提供了静态和动态分析基础设施定义以检查易受攻击的依赖项、硬编码的秘密、不安全的配置和安全配置中的意外更改的机会。以下工具可以促进此分析。
多平台
- Checkov - Bridgecrew - 扫描 Terraform、AWS CloudFormation 和 Kubernetes 模板中的不安全配置。
- KICS - Checkmarx - 在开发周期的早期发现安全漏洞、合规性问题和基础设施配置错误。
- Spectral DeepConfig - Spectral - 在提交时就发现基础设施和应用程序中的错误配置。
- Terrascan - Accurics - 在预置云原生基础设施之前,检测基础设施即代码中的合规性和安全违规,以降低风险。
Cloud Formation
- Cfn Nag - Stelligent - 扫描 AWS CloudFormation 模板中的不安全配置。
容器
- Clair - Red Hat - 扫描应用容器和 Docker 容器中公开披露的漏洞。
- Dagda - Elías Grande - 比较 Docker 容器中安装的操作系统和软件依赖项版本与公共漏洞数据库,并执行病毒扫描。
- Docker-Bench-Security - Docker - Docker Bench for Security 是一个脚本,用于检查在生产环境中部署 Docker 容器时的数十种常见最佳实践。
- Grype - Anchore - 一个易于集成的开源漏洞扫描工具,用于容器镜像和文件系统。
- Hadolint - Hadolint - 根据已知规则检查 Dockerfile,并验证 RUN 语句中的内联 bash 代码。
- Snyk Container - Snyk - 在 CI/CD 期间或通过持续监控扫描 Docker 和 Kubernetes 应用程序的安全漏洞。
- Trivy - Aqua Security - 简单而全面的容器漏洞扫描器。
Terraform
- Regula - Fugue - 在部署前评估Terraform基础设施即代码,检查潜在的安全配置错误和合规性违规。
- Terraform Compliance - terraform-compliance - 一个轻量级、专注于安全和合规性的测试框架,针对terraform进行负面测试,以确保基础设施即代码的安全性。
- Tfsec - Liam Galvin - 扫描Terraform模板,检查安全配置错误以及是否符合AWS、Azure和GCP的安全最佳实践。
Kubernetes
- Kubescape - Cloud Native Computing Foundation - 一个开源的Kubernetes安全平台,适用于IDE、CI/CD流程和集群。
- Kube-Score - Gustav Westling - 扫描Kubernetes对象定义,检查安全和性能配置错误。
- Kubectrl Kubesec - ControlPlane - kubesec.io的插件,用于对Kubernetes资源进行安全风险分析。
Ansible
- Ansible-Lint - Ansible社区 - 检查playbook中可能需要改进的做法和行为。作为社区支持的项目,ansible-lint仅支持Ansible的最新两个主要版本。
故意存在漏洞的应用程序
故意存在漏洞的应用程序在开发安全测试和工具时常常很有用,它们提供了一个可以运行测试并确保测试正确失败的环境。这些应用程序还可以帮助理解常见漏洞是如何被引入应用程序的,让你可以练习利用这些漏洞的技能。
- Bad SSL - The Chromium Project - 运行多个配置不当的SSL/TLS Web服务器的容器。适用于测试工具。
- Cfngoat - Bridgecrew - 用于在AWS中创建故意不安全服务堆栈的Cloud Formation模板。适合测试上述Cloud Formation基础设施即代码分析工具。
- CI/CD Goat - Cider Security - 一个故意存在漏洞的CI/CD环境。通过多个挑战学习CI/CD安全。
- Damn Vulnerable Web App - Ryan Dewhurst - 一个提供安全环境的Web应用程序,用于理解和利用常见Web漏洞。
- Juice Shop - OWASP - 包含OWASP十大安全漏洞及更多漏洞的Web应用程序。
- Kubernetes Goat - Madhu Akula - 故意存在漏洞的集群环境,用于学习和练习Kubernetes安全。
- NodeGoat - OWASP - 一个Node.js Web应用程序,演示并提供解决常见安全漏洞的方法。
- Pentest-Ground - Pentest-Tools.com - Pentest-Ground是一个免费的游乐场,包含故意存在漏洞的Web应用程序和网络服务。
- Terragoat - Bridgecrew - 用于在AWS、Azure和GCP中创建故意不安全服务堆栈的Terraform模板。适合测试上述Terraform基础设施即代码分析工具。
- Vulnerable Web Apps Directory - OWASP - 用于学习目的的易受攻击的Web应用程序集合。
- WrongSecrets - OWASP - 存在漏洞的应用程序,展示了如何不正确使用密钥的示例。
监控
仅在发布前测试和加固我们的软件是不够的。我们还必须监控生产软件的使用、性能和错误,以捕捉恶意行为和可能需要响应或解决的潜在安全漏洞。有各种各样的工具可用于监控生产软件和基础设施的不同方面。
- Csper - Csper - 一套内容安全策略工具,可以测试策略、监控CSP报告并提供指标和警报。
- Streamdal - Streamdal - 在应用程序代码中嵌入隐私控制,以在个人身份信息进入和离开系统时检测和监控,防止其到达未预期的数据库、数据流或管道。
密钥管理
我们编写的软件需要使用密钥(密码、API密钥、证书、数据库连接字符串)来访问资源,但我们不能将密钥存储在代码库中,因为这会使它们容易受到泄露。密钥管理工具提供了一种安全存储、访问和管理密钥的方法。
- Ansible Vault - Ansible - 在Ansible管道中安全存储机密信息。
- AWS Key Management Service (KMS) - Amazon AWS - 在AWS中创建和管理加密密钥。
- AWS Secrets Manager - Amazon AWS - 在AWS中安全存储可检索的应用程序机密。
- Azure Key Vault - Microsoft Azure - 在Azure中安全存储机密信息。
- BlackBox - StackExchange - 在代码仓库中加密凭证。
- Chef Vault - Chef - 在Chef中安全存储机密信息。
- CredStash - Fugue - 使用KMS和DynamoDB在AWS中安全存储机密信息。
- CyberArk Application Access Manager - CyberArk - 应用程序的机密管理,包括机密轮换和审计。
- Docker Secrets - Docker - 在Docker集群中存储和管理对机密的访问。
- Git Secrets - Amazon AWS - 扫描git仓库中代码或提交消息中的机密信息。
- Gopass - Gopass - 依赖Git和gpg的团队密码管理器。在加密文件和仓库中管理机密信息。
- Google Cloud Key Management Service (KMS) - Google Cloud Platform - 在GCP中安全存储机密信息。
- HashiCorp Vault - HashiCorp - 通过UI、CLI或HTTP API安全存储机密信息。
- Keyscope - Spectral - Keyscope是一个用Rust构建的开源密钥和机密工作流工具(验证、失效等)。
- Pinterest Knox - Pinterest - 安全存储、轮换和审计机密信息。
- Secrets Operations (SOPS) - Mozilla - 加密存储在YAML、JSON、ENV、INI和BINARY文件中的密钥。
- Teller - Spectral - 面向开发人员的机密管理工具 - 无需离开命令行即可管理机密。
机密扫描
源代码控制不是存储机密信息(如凭证、API密钥或令牌)的安全场所,即使仓库是私有的也不例外。机密扫描工具可以扫描和监控git仓库和拉取请求中的机密信息,可用于防止机密被提交,或查找和删除已经提交到源代码控制中的机密。
- CredScan - Microsoft - 可以作为Azure DevOps管道中的任务运行的凭证扫描工具。
- Detect Secrets - Yelp - 一个恰如其名的模块,用于(不出所料)检测代码库中的机密。
- GitGuardian - GitGuardian - 一个基于Web的解决方案,用于扫描和监控公共和私有git仓库中的机密。
- Gitleaks - Zachary Rice - Gitleaks是一个SAST工具,用于检测git仓库中硬编码的机密,如密码、API密钥和令牌。
- git-secrets - AWS Labs - 扫描提交、提交消息和合并中的机密。原生支持AWS机密模式,但可配置以支持其他模式。
- Nightfall - Nightfall - 一个基于Web的平台,可监控多个SDLC工具(包括GitHub仓库)中的敏感数据泄露。
- Repo-supervisor - Auth0 - 可以作为CLI、Docker容器或在AWS Lambda中运行的机密扫描工具。
- SpectralOps - Spectral - 自动化代码安全、机密、令牌和敏感数据扫描。
- truffleHog - Truffle Security - 在git仓库中搜索机密,深入挖掘提交历史和分支。
静态分析
静态分析安全测试(SAST)工具在不执行目标软件的情况下扫描软件中的漏洞。通常,静态分析会扫描源代码中的安全缺陷,如使用不安全的函数、硬编码的机密和配置问题。SAST工具通常以IDE插件和CLI的形式出现,可以集成到CI/CD管道中。
多语言支持
- DevSkim - 微软 - 一套IDE插件、命令行工具和其他工具,为多种编程语言提供安全分析。
- Graudit - Eldar Marcussen - 使用自定义或预配置的正则表达式签名对源代码进行grep,查找潜在的安全漏洞。
- Hawkeye - Hawkeyesec - 模块化的命令行工具,用于项目安全、漏洞和一般风险突出显示。
- LGTM - Semmle - 使用自定义或内置的CodeQL查询来扫描和监控代码中的安全漏洞。
- RIPS - RIPS Technologies - 针对PHP、Java和Node.js项目的自动化静态分析。
- SemGrep - r2c - Semgrep是一个快速、开源的静态分析工具,可在编辑器、提交和CI时发现bug并强制执行代码标准。
- SonarLint - SonarSource - 一个IDE插件,可突出显示潜在的安全问题、代码质量问题和bug。
- SonarQube - SonarSource - 扫描代码中的安全和质量问题,支持多种编程语言。
C / C++
- FlawFinder - David Wheeler - 扫描C / C++代码中的潜在安全弱点。
C#
- Puma Scan - Puma Security - 一个Visual Studio插件,用于扫描.NET项目中的潜在安全漏洞。
配置文件
Java
- Deep Dive - Discotek.ca - 对JVM部署单元(包括Ear、War、Jar和APK)进行静态分析。
- Find Security Bugs - OWASP - 用于Java Web应用安全审计的SpotBugs插件。支持Eclipse、IntelliJ、Android Studio和SonarQube。
- SpotBugs - SpotBugs - Java应用程序的静态代码分析。
JavaScript
- ESLint - JS Foundation - JavaScript的代码检查工具,有多个安全检查规则可用。
Go
- Golang Security Checker - securego - 用于扫描Go代码中潜在安全漏洞的命令行工具。
.NET
- Security Code Scan - Security Code Scan - C#和VB.NET应用程序的静态代码分析。
PHP
- Phan - Phan - 针对PHP应用程序的广泛静态分析,具有一些安全扫描功能支持。
- PHPCS Security Audit - Floe - PHP静态分析,包含PHP、Drupal 7和PHP相关CVE的规则。
- Progpilot - Design Security - PHP源代码的静态分析。
Python
- Bandit - Python Code Quality Authority - 在Python代码中查找常见的安全漏洞。
Ruby
- Brakeman - Justin Collins - 静态分析工具,用于检查Ruby on Rails应用程序中的安全漏洞。
- DawnScanner - Paolo Perego - Ruby脚本和Web应用程序的安全扫描。支持Ruby on Rails、Sinatra和Padrino框架。
供应链安全
供应链攻击以不同的形式出现,针对SDLC中本质上是第三方的部分:CI中的工具、已执行的外部代码等。供应链安全工具可以防御这些类型的攻击。
- Harden Runner GitHub Action - StepSecurity - 在GitHub托管的运行器(Ubuntu虚拟机)上安装安全代理,以防止凭证泄露,检测受损的依赖项和构建工具,以及检测构建过程中源代码的篡改。
- Overlay - SCAR - 一个浏览器扩展,帮助开发者在选择开源包之前对其进行评估。
- Preflight - Spectral - 帮助你验证脚本和可执行文件,以减轻CI和其他系统中的供应链攻击,例如最近的Codecov黑客事件。
- Sigstore - sigstore是一套免费使用的开源工具,包括fulcio、cosign和rekor,处理数字签名、验证和来源检查,使开源软件的分发和使用更加安全。
- Syft - Anchore - 一个用于从容器镜像和文件系统生成软件物料清单(SBOM)的命令行工具。
威胁建模
威胁建模是一种工程练习,旨在识别对有价值事物构成风险的威胁、漏洞和攻击途径。基于对威胁的理解,我们可以设计、实施和验证安全控制以减轻威胁。以下工具列表有助于威胁建模过程。
- Awesome Threat Modelling - Practical DevSecOps - 精选的威胁建模资源列表。
- SecuriCAD - Forseeti - IT基础设施的威胁建模和攻击模拟。
- IriusRisk - IriusRisk - 绘制威胁模型,捕捉威胁和对策,并管理风险。
- Raindance Project - DevSecOps - 使用攻击图来识别可能导致系统受损的攻击面和对手策略。
- SD Elements - Security Compass - 识别和排序威胁,生成可执行任务并跟踪相关工单。
- Threat Dragon - OWASP - 威胁模型图形工具。
- Threat Modelling Tool - Microsoft - 威胁模型图形工具。
- Threatspec - Threatspec - 将威胁建模定义为代码。
相关列表
- Awesome Dynamic Analysis - Matthias Endler - 动态分析工具和代码质量检查器的集合。
- Awesome Platform Engineering - _平台工程_解决方案、工具和资源的精选列表。
- Awesome Static Analysis - Matthias Endler - 静态分析工具和代码质量检查器的集合。
- Awesome Threat Modelling - Practical DevSecOps - 精选的威胁建模资源列表。
- Vulnerable Web Apps Directory - OWASP - 用于学习目的的易受攻击的Web应用程序集合。