安全扫描Skill security-scan

本技能提供快速、例行的安全检查,用于开发期间频繁运行,帮助早期检测硬编码秘密、依赖项漏洞、容器镜像漏洞和常见安全反模式。支持多种工具和集成,适用于DevOps工作流,防止安全泄露和漏洞引入。关键词:安全扫描、漏洞检测、依赖审计、容器安全、静态代码分析、DevOps安全、快速安全检查、预提交安全。

安全审计 0 次安装 0 次浏览 更新于 3/24/2026

name: security-scan description: 快速例行的安全检查,用于检测秘密、依赖项、容器镜像和常见漏洞。在开发期间频繁运行。触发词:安全扫描、SAST、DAST、漏洞扫描、依赖扫描、容器扫描、秘密扫描、凭证扫描、快速扫描、秘密检查、漏洞检查、安全检查、预提交安全、例行安全、Snyk、Trivy、Semgrep、CodeQL、Bandit、safety、npm audit、cargo audit、gitleaks、trufflehog、govulncheck、pip-audit。 allowed-tools: Read, Grep, Glob, Bash

安全扫描

概述

本技能提供快速、例行的安全检查,应在开发期间频繁运行。这些是轻量级扫描,旨在早期捕捉常见问题,而非全面审计。

工具选择矩阵

扫描类型 最佳工具 替代工具 用途
秘密 TruffleHog Gitleaks 硬编码凭证、API密钥
依赖项 (JS) npm audit Snyk, OWASP 包中的已知CVE
依赖项 (Python) pip-audit safety PyPI漏洞数据库
依赖项 (Go) govulncheck nancy 官方Go漏洞DB
依赖项 (Rust) cargo audit - RustSec咨询DB
容器镜像 Trivy Grype, Snyk 镜像漏洞、秘密
SAST (多语言) Semgrep CodeQL 安全反模式
SAST (Python) Bandit Semgrep Python特定问题
SAST (Go) gosec Semgrep Go特定问题
Dockerfile hadolint Trivy config 最佳实践、错误配置
IaC (Terraform) tfsec Checkov, Trivy Terraform错误配置
IaC (K8s) kubesec Trivy, Checkov Kubernetes YAML安全

使用时机

  • 提交前: 快速检查秘密和明显问题
  • PR审核期间: 验证未引入新漏洞
  • 定期间隔: 每日/每周自动检查
  • 依赖项更新后: 验证无新CVE
  • 快速健全性检查: 开发期间的快速验证

对于全面的安全工作,使用security-audit技能或升级到具有/security-audit/threat-model技能的senior-software-engineer代理。

快速扫描检查清单

按优先级顺序运行这些检查:

1. 秘密检测 (关键)

目标: 在版本控制前找到硬编码凭证、API密钥、令牌和私钥。

# 使用grep模式检查硬编码秘密
# API密钥
grep -rn --include="*.{js,ts,py,go,java,rb,php}" \
  -E "(api[_-]?key|apikey)\s*[:=]\s*['\"][a-zA-Z0-9]{16,}" .

# AWS凭证
grep -rn --include="*.{js,ts,py,go,java,rb,php,env,yaml,yml,json}" \
  -E "(AKIA|ABIA|ACCA|ASIA)[A-Z0-9]{16}" .

# 私钥
grep -rn --include="*.{pem,key,env}" \
  -E "-----BEGIN (RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----" .

# 通用秘密
grep -rn --include="*.{js,ts,py,go,java,rb,php}" \
  -E "(password|secret|token)\s*[:=]\s*['\"][^'\"]{8,}" .

更好: 使用专用工具

# TruffleHog (推荐)
trufflehog filesystem --directory=. --only-verified --no-update

# GitLeaks
gitleaks detect --source=. --no-git

# git-secrets (如已安装)
git secrets --scan

2. 依赖项漏洞 (高)

目标: 跨包生态系统识别直接和传递依赖项中的已知CVE。

# Node.js
npm audit --audit-level=high
# 或
yarn audit --level high

# Python
pip-audit
# 或
safety check

# Go
govulncheck ./...

# Rust
cargo audit

# Ruby
bundle audit check --update

# .NET
dotnet list package --vulnerable --include-transitive

# 多生态系统 (Snyk - 需要账户)
snyk test --severity-threshold=high

# OWASP Dependency-Check (慢但全面)
dependency-check --scan . --failOnCVSS 7

3. 容器镜像扫描 (高)

目标: 扫描Docker镜像的漏洞、错误配置和嵌入秘密。

# Trivy (推荐 - 快速、全面)
trivy image --severity HIGH,CRITICAL myimage:latest
trivy image --scanners vuln,secret,config myimage:latest

# Grype (Anchore)
grype myimage:latest --only-fixed

# Snyk Container
snyk container test myimage:latest --severity-threshold=high

# Docker Scout (Docker Desktop)
docker scout cves myimage:latest --only-severity critical,high

# Clair (需要服务器)
clairctl analyze myimage:latest

# 构建前扫描Dockerfile
hadolint Dockerfile
trivy config --severity HIGH,CRITICAL Dockerfile

4. 快速静态分析 (中)

目标: 使用SAST工具检测安全反模式和常见漏洞类。

# 多语言用Semgrep (快速默认)
semgrep --config=p/security-audit --config=p/secrets .

# 仅Python
bandit -r . -ll  # 仅高严重性

# JavaScript/TypeScript
npx eslint . --ext .js,.ts --no-eslintrc \
  --plugin security --rule 'security/detect-object-injection: error'

# Go
gosec -severity high ./...

# CodeQL (需要GitHub设置)
codeql database create codeql-db --language=javascript
codeql database analyze codeql-db --format=sarif-latest --output=results.sarif

# SonarQube (需要服务器)
sonar-scanner -Dsonar.projectKey=myproject

5. 配置检查 (中)

目标: 验证基础设施即代码和配置文件的安全性错误配置。

# Docker
hadolint Dockerfile

# Terraform
tfsec . --minimum-severity HIGH

# Kubernetes
kubesec scan deployment.yaml

# 通用配置
checkov -f config.yaml --check HIGH

预提交钩子设置

添加到.pre-commit-config.yaml:

repos:
  - repo: https://github.com/trufflesecurity/trufflehog
    rev: v3.63.0
    hooks:
      - id: trufflehog
        entry: trufflehog filesystem --no-update --fail --only-verified
        args: ["--directory=."]

  - repo: https://github.com/zricethezav/gitleaks
    rev: v8.18.0
    hooks:
      - id: gitleaks

  - repo: https://github.com/returntocorp/semgrep
    rev: v1.52.0
    hooks:
      - id: semgrep
        args: ["--config=p/secrets", "--error"]

工具安装快速参考

# 秘密扫描
brew install trufflesecurity/trufflehog/trufflehog
brew install gitleaks

# 依赖项扫描
npm install -g npm-audit
pip install pip-audit safety
go install golang.org/x/vuln/cmd/govulncheck@latest
cargo install cargo-audit

# 容器扫描
brew install trivy
brew install anchore/grype/grype

# SAST
brew install semgrep
pip install bandit
go install github.com/securego/gosec/v2/cmd/gosec@latest

# 基础设施扫描
brew install hadolint tfsec

CI/CD集成

GitHub Actions (推荐)

name: Security Scan

on:
  push:
    branches: [main]
  pull_request:

jobs:
  security-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Secret Scan
        uses: trufflesecurity/trufflehog@main
        with:
          extra_args: --only-verified

      - name: Dependency Scan
        run: |
          npm audit --audit-level=high || true
          # 根据需要添加其他包管理器

      - name: SAST
        uses: returntocorp/semgrep-action@v1
        with:
          config: p/security-audit p/secrets

      - name: Container Scan
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: myimage:${{ github.sha }}
          severity: HIGH,CRITICAL
          exit-code: 1

GitLab CI

security-scan:
  stage: test
  image: returntocorp/semgrep:latest
  script:
    - semgrep --config=p/security-audit --config=p/secrets .
  allow_failure: false

dependency-scan:
  stage: test
  image: node:latest
  script:
    - npm audit --audit-level=high
  allow_failure: false

container-scan:
  stage: test
  image: aquasec/trivy:latest
  script:
    - trivy image --severity HIGH,CRITICAL $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

CircleCI

version: 2.1

orbs:
  security: circleci/security@1.0

workflows:
  security-checks:
    jobs:
      - security/scan:
          severity: high
      - trivy/scan:
          image: myimage:latest

扫描结果解释

严重性级别

级别 行动 时间线
关键 阻止合并,立即修复 小时
应在合并前修复
计划修复 冲刺
跟踪,机会性修复 积压

常见误报

秘密检测:

  • 测试夹具中的假密钥
  • 文档示例
  • 非秘密的Base64编码
  • UUID和随机ID

依赖项扫描:

  • 仅开发依赖项
  • 未使用代码路径
  • 已缓解问题

结果分类

## 扫描结果分类

### 确认问题

| 发现           | 严重性 | 文件         | 行动             |
| ----------------- | -------- | ------------ | ------------------ |
| 硬编码API密钥 | 关键 | config.js:42 | 移除、轮换密钥 |
| lodash CVE        | 高     | package.json | 更新到4.17.21  |

### 误报

| 发现            | 原因       | 行动                 |
| ------------------ | ------------ | ---------------------- |
| test_api_key       | 测试夹具 | 添加到.gitleaksignore |
| 开发依赖项CVE | 不在生产  | 记录接受    |

### 接受风险

| 发现             | 理由     | 审核者  |
| ------------------- | ----------------- | --------- |
| CLI工具中的低CVE | 仅内部使用 | @security |

快速命令参考

# 一行命令: 快速秘密 + 依赖项检查
npm audit --audit-level=high && gitleaks detect --no-git

# Python项目
pip-audit && bandit -r src/ -ll

# Go项目
govulncheck ./... && gosec -severity high ./...

# Rust项目
cargo audit && cargo clippy -- -W clippy::security

# 容器安全堆栈
trivy image --severity HIGH,CRITICAL myimage:latest && \
hadolint Dockerfile && \
trivy config --severity HIGH,CRITICAL .

# 完整快速扫描 (所有工具已安装)
trufflehog filesystem . --only-verified && \
npm audit --audit-level=high && \
semgrep --config=p/security-audit --config=p/secrets . && \
trivy fs --severity HIGH,CRITICAL .

# 全面多生态系统扫描
snyk test --all-projects --severity-threshold=high

升级

当发现以下情况时,升级到完整security-audit技能或senior-software-engineer代理 (具有/security-audit/threat-model技能):

  • 关键发现
  • 不寻常或复杂漏洞
  • 架构级安全担忧
  • 合规相关问题
  • 需要事件响应