安全与风控
需要为应用代码配置 SAST 并集成到…
在代码库或 CI/CD 中搭建、配置和调优 SAST 扫描,覆盖 Semgrep、SonarQube、CodeQL 等工具。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要为应用代码配置 SAST 并集成到 特定
解决思路
- 在 CI/CD 管道中设置 SAST 扫描。
- 为代码库创建自定义安全规则。
- 配置质量门禁和合规策略。
- 优化扫描性能并减少误报。
- 集成多个 SAST 工具以实现纵深防御。
- Semgrep:使用模式匹配创建自定义规则。
- Semgrep:为 Python、JavaScript、Go、Java 等编写语言特定的安全规则。
- Semgrep:集成到 GitHub Actions、GitLab CI、Jenkins。
- Semgrep:调整误报并优化规则。
- Semgrep:执行组织策略。
- SonarQube:配置质量门禁。
- SonarQube:分析安全热点。
- SonarQube:跟踪代码覆盖率和技术债务。
- SonarQube:为各语言创建自定义质量配置。
- SonarQube:与 LDAP/SAML 进行企业集成。
- CodeQL:集成 GitHub Advanced Security。
- CodeQL:开发自定义查询。
- CodeQL:进行漏洞变体分析。
- CodeQL:用于安全研究工作流。
- CodeQL:处理 SARIF 结果。
- 初始评估:确定代码库主要编程语言。
- 初始评估:确定合规要求(PCI-DSS、SOC 2 等)。
- 初始评估:根据语言支持和集成需求选择 SAST 工具。
- 初始评估:查看基线扫描以了解当前安全态势。
- 基础设置:运行 pip install semgrep。
- 基础设置:运行 semgrep --config=auto --error。
- 基础设置:用 Docker 运行 docker run -d --name sonarqube -p 9000:9000 sonarqube:10.8-community。
- 基础设置:运行 gh extension install github/gh-codeql。
- 基础设置:运行 codeql database create mydb --language=python。
- CI/CD 集成:在 GitHub Actions 中添加 Semgrep 步骤,使用 returntocorp/semgrep-action@v1,config 包含 p/security-audit 和 p/owasp-top-ten。
- 预提交钩子:在 .pre-commit-config.yaml 中配置 repo: https://github.com/returntocorp/semgrep,rev: v1.45.0,hooks id: semgrep,args: ['--config=auto', '--error']。
- 最佳实践:运行初始扫描建立安全基线。
- 最佳实践:优先处理严重和高危发现。
- 最佳实践:创建修复路线图。
- 最佳实践:从以安全为重点的规则开始。
- 最佳实践:逐步添加代码质量规则。
- 最佳实践:仅对关键问题实施阻断。
- 最佳实践:记录合法的抑制。
- 最佳实践:为已知安全模式创建允许列表。
- 最佳实践:定期审查被抑制的发现。
- 最佳实践:排除测试文件和生成代码。
- 最佳实践:对大型代码库使用增量扫描。
- 最佳实践:在 CI/CD 中缓存扫描结果。
- 最佳实践:为开发者提供安全培训。
- 最佳实践:为常见模式创建内部文档。
- 最佳实践:建立安全冠军计划。
- 新项目设置:运行 ./scripts/run-sast.sh --setup --language python --tools semgrep,sonarqube。
- 自定义规则开发:编写 Semgrep YAML 规则,示例 id 为 hardcoded-jwt-secret,pattern 为 jwt.encode($DATA, "...", ...),message 为 JWT secret should not be hardcoded,severity 为 ERROR;详细示例见 references/semgrep-rules.md。
- 合规扫描:运行 semgrep --config p/pci-dss --json -o pci-scan-results.json。
- 误报率高时:审查并调整规则敏感度。
- 误报率高时:添加路径过滤以排除测试文件。
- 误报率高时:对噪声模式使用 nostmt 元数据。
- 误报率高时:创建组织特定规则例外。
- 性能问题时:启用增量扫描。
- 性能问题时:跨模块并行扫描。
- 性能问题时:优化规则模式以提高效率。
- 性能问题时:缓存依赖和扫描结果。
- 集成失败时:验证 API token 和凭据。
- 集成失败时:检查网络连接和代理设置。
- 集成失败时:审查 SARIF 输出格式兼容性。
- 集成失败时:验证 CI/CD runner 权限。
- 工具选择:Semgrep 适合自定义规则和快速扫描,支持 30+ 语言,成本为 Free/Enterprise,集成 Excellent。
- 工具选择:SonarQube 适合代码质量+安全,支持 25+ 语言,成本为 Free/Commercial,集成 Good。
- 工具选择:CodeQL 适合深度分析和研究,支持 10+ 语言,成本为 Free (OSS),集成为 GitHub native。
- 后续步骤:完成初始 SAST 工具设置。
- 后续步骤:运行基线安全扫描。
- 后续步骤:为组织特定模式创建自定义规则。
- 后续步骤:集成到 CI/CD 管道。
- 后续步骤:建立安全门禁策略。
- 后续步骤:培训开发团队理解发现和修复。
适用边界 · 注意事项
- 需要检测运行时/动态漏洞、依赖项漏洞或容器漏洞时,不应只依赖 SAST;应配合 DAST、依赖扫描、容器安全等。
- 代码库主要语言不在所选 SAST 工具支持范围内,或无法在 CI/CD/本地安装和运行 Semgrep、SonarQube、CodeQL 并配置权限时不适用。
- 无法承担扫描时间、误报处理和维护自定义规则成本时不适用。