
关于
代码漏洞的静态应用安全测试(SAST),识别安全缺陷、注入漏洞和不安全的编码模式。
name: security-scanning-security-sast description: '静态应用安全测试(SAST),用于跨多种语言和框架的代码漏洞分析' risk: unknown source: community date_added: '2026-02-27'
SAST 安全扫描插件
静态应用安全测试(SAST),用于跨多种语言、框架和安全模式的全面代码漏洞检测。
功能特性
- 多语言 SAST 扫描:Python、JavaScript/TypeScript、Java、Ruby、PHP、Go、Rust
- 工具集成:Bandit、Semgrep、ESLint Security、SonarQube、CodeQL、PMD、SpotBugs、Brakeman、gosec、cargo-clippy
- 漏洞模式检测:SQL 注入、XSS、硬编码密钥、路径遍历、IDOR、CSRF、不安全反序列化
- 框架分析:Django、Flask、React、Express、Spring Boot、Rails、Laravel
- 自定义规则编写:Semgrep 模式开发,用于组织特定的安全策略
适用场景
适用于代码审查安全分析、注入漏洞检测、硬编码密钥发现、框架特定模式识别、自定义安全策略执行、部署前验证、遗留代码评估,以及合规性检查(OWASP、PCI-DSS、SOC2)。
专用工具:使用 security-secrets.md 进行高级凭证扫描,使用 security-owasp.md 进行 Top 10 映射,使用 security-api.md 进行 REST/GraphQL 端点检测。
不适用场景
- 仅需要运行时测试或渗透测试
- 无法访问源代码或构建产物
- 环境禁止使用第三方扫描工具
使用说明
- 确定要扫描的语言、框架和范围。
- 选择 SAST 工具并为代码库配置规则。
- 在 CI 中或本地以可复现的设置运行扫描。
- 对发现的问题进行分类,按严重程度排序,并提出修复建议。
安全注意事项
- 未经批准,避免将专有代码上传到外部服务。
- 在启用自动修复或阻止发布之前,需要进行审查。
SAST 工具选择
Python:Bandit
# 安装与扫描
pip install bandit
bandit -r . -f json -o bandit-report.json
bandit -r . -ll -ii -f json # 仅高危/严重级别
配置文件:.bandit
exclude_dirs: ['/tests/', '/venv/', '/.tox/', '/build/']
tests: [B201, B301, B302, B303, B304, B305, B307, B308, B312, B323, B324, B501, B502, B506, B602, B608]
skips: [B101]
JavaScript/TypeScript:ESLint Security
npm install --save-dev eslint @eslint/plugin-security eslint-plugin-no-secrets
eslint . --ext .js,.jsx,.ts,.tsx --format json > eslint-security.json
配置文件:.eslintrc-security.json
{
plugins: [@eslint/plugin-security, eslint-plugin-no-secrets],
extends: [plugin:security/recommended],
rules: {
security/detect-object-injection: error,
security/detect-non-literal-fs-filename: error,
security/detect-eval-with-expression: error,
security/detect-pseudo-random-prng: error,
no-secrets/no-secrets: error
}
}
多语言:Semgrep
pip install semgrep
semgrep --config=auto --json --output=semgrep-report.json
semgrep --config=p/security-audit --json
semgrep --config=p/owasp-top-ten --json
semgrep ci --config=auto # CI 模式
自定义规则:.semgrep.yml
rules:
- id: sql-injection-format-string
pattern: cursor.execute("... %s ..." % $VAR)
message: 通过字符串格式化的 SQL 注入
severity: ERROR
languages: [python]
metadata:
cwe: "CWE-89"
owasp: "A03:2021-Injection"
- id: dangerous-innerHTML
pattern: $ELEM.innerHTML = $VAR
message: 通过 innerHTML 赋值的 XSS 漏洞
severity: ERROR
languages: [javascript, typescript]
metadata:
cwe: "CWE-79"
- id: hardcoded-aws-credentials
patterns:
- pattern: $KEY = "AKIA..."
- metavariable-regex:
metavariable: $KEY
regex: "(aws_access_key_id|AWS_ACCESS_KEY_ID)"
message: 检测到硬编码的 AWS 凭证
severity: ERROR
languages: [python, javascript, java]
- id: path-traversal-open
patterns:
- pattern: open($PATH, ...)
- pattern-not: open(os.path.join(SAFE_DIR, ...), ...)
- metavariable-pattern:
metavariable: $PATH
patterns:
- pattern: $REQ.get(...)
message: 通过用户输入的路径遍历漏洞
severity: ERROR
languages: [python]
- id: command-injection
patterns:
- pattern-either:
- pattern: os.system($CMD)
- pattern: subprocess.call($CMD, shell=True)
- metavariable-pattern:
metavariable: $CMD
patterns:
- pattern-either:
- pattern: $X + $Y
- pattern: f"...{$VAR}..."
message: 通过 shell=True 的命令注入漏洞
severity: ERROR
languages: [python]
其他语言工具
Java:mvn spotbugs:check
Ruby:brakeman -o report.json -f json
Go:gosec -fmt=json -out=gosec.json .
兼容工具
Claude CodeCursor
标签
安全
