关于 source-code-scanning
面向开发者和安全审查人员的源代码安全审查技能。它结合适配技术栈的 SAST、依赖项与密钥扫描,以及高风险代码、恶意内容和移动应用二进制文件的人工检查,并按证据和修复建议整理发现。
主要功能
- 01识别语言与框架
- 02运行适配技术栈的 SAST
- 03扫描依赖项 CVE
- 04检测嵌入的密钥
- 05审查高风险代码路径
- 06分析移动应用二进制文件
适用场景
- 01发布前审查代码仓库
- 02检查依赖项中的已知 CVE
- 03调查可疑代码或后门
- 04检查 APK 或 IPA 中的嵌入密钥
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ transilienceai/ communitytools --skill source-code-scanning安装后在 Claude Code 中输入/source-code-scanning确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/dependency-cve-scanning.mdlanguage-patterns.mdmalicious-code.mdmanual-review.mdsast-tools.mdsecrets-detection.md详细介绍
源代码安全审查
快速入门
- 识别 — 确认项目使用的语言、框架和包管理器
- 自动化 SAST — 运行适用于该技术栈的工具
- 依赖项 CVE — 扫描锁定文件和清单,检查已知 CVE
- 密钥扫描 — 检测硬编码的凭据和令牌
- 手动审查 — 跟踪高风险接收点(exec、eval、query、deserialize)
- 恶意代码 — 检查后门、混淆代码和可疑网络调用
- 报告 — 提供包含 CWE/CVE 参考、严重程度、PoC 和修复建议的发现
工作流
阶段 1:枚举
- Languages: ls **/*.{py,js,ts,java,go,rb,php,cs,rs}
- Packages: find package.json, requirements.txt, go.mod, pom.xml, Gemfile, composer.json, Cargo.toml
- Entry points: main(), index.*, app.*, server.*
- Config files: .env*, config.*, settings.*, *.yaml, *.toml
阶段 2:自动化 SAST
各语言对应的命令请参见 sast-tools.md。
主要工具:
- 多语言:Semgrep(
semgrep --config=auto .) - Python:Bandit(
bandit -r . -f json) - JavaScript/TS:ESLint 安全插件、njsscan
- Java:SpotBugs + FindSecBugs
- Go:gosec(
gosec ./...) - PHP:PHPCS Security Audit
- Ruby:Brakeman(
brakeman -o report.json) - 全部:CodeQL(通过
gh codeql)
阶段 3:依赖项 CVE 扫描
相关命令请参见 dependency-cve-scanning.md。
| 生态系统 | 命令 |
|---|---|
| npm/yarn | npm audit --json / yarn audit |
| Python | pip-audit -r requirements.txt |
| Java | dependency-check --scan . |
| Go | govulncheck ./... |
| Ruby | bundle audit |
| 通用 | trivy fs . / grype dir:. |
阶段 4:密钥检测
请参见 secrets-detection.md。
trufflehog filesystem . --json
gitleaks detect --source . -v
阶段 5:手动审查
重点检查高风险接收点 — 请参见 manual-review.md:
- 注入接收点:
exec、eval、query、system、popen - 反序列化:
pickle.loads、ObjectInputStream、unserialize - 加密:硬编码密钥、弱算法(MD5、SHA1、DES、ECB)
- 身份验证:JWT 验证、会话管理、RBAC 执行
- 文件操作:使用用户输入构造路径
阶段 6:恶意代码
请参见 malicious-code.md:
- 混淆字符串(base64、hex、charCode)
- 库代码中的意外网络调用
- 仿冒包名迹象
- 滥用 postinstall/生命周期脚本
- 依赖项中的隐藏后门
特定语言模式
Python、JS、Java、Go、PHP 和 Ruby 的相关内容请参见 language-patterns.md。
严重程度映射
| 严重程度 | CVSS | 示例 |
|---|---|---|
| 严重 | 9.0+ | RCE、伴随数据外泄的 SQLi、绕过身份验证 |
| 高 | 7.0-8.9 | 存储型 XSS、SSRF、不安全的反序列化 |
| 中 | 4.0-6.9 | 反射型 XSS、信息泄露、IDOR |
| 低 | 0.1-3.9 | 缺少安全标头、错误信息过于详细 |
输出格式
findings/
<severity>-<vuln-type>-<location>.md # One file per finding
evidence/
<tool>-output.json # Raw tool output
summary-report.md # Executive summary
每项发现:CWE/CVE ID | 文件:行号 | 严重程度 | PoC | 修复建议
移动应用分析(APK/IPA)
收到移动应用二进制文件时:
- 提取:
unzip app.apk -d extracted/(APK 是 ZIP 归档文件) - 识别框架:React Native(
assets/index.android.bundle)、Flutter(libflutter.so)、Xamarin 或原生应用 - React Native:JS 包是纯文本 — 搜索密钥、API 密钥、配置对象和硬编码令牌
- 编码后的密钥:搜索已知标志/密钥格式的 base64 前缀(例如,
RkxBR是FLAG的 base64 编码)。配置对象通常会在debug、secret、apiKey字段中以 base64 格式存储密钥 - 原生应用:使用
jadx反编译 Java/Kotlin,检查AndroidManifest.xml、strings.xml、BuildConfig - 共享库:使用
strings检查.so文件中的硬编码凭据
关键规则
- 审查期间切勿执行不可信代码
- 在验证之前,将所有发现视为潜在问题
- 始终根据实际使用的版本交叉核对 CVE
- 单独报告供应链问题(这些问题会影响所有用户)
评论
支持 Markdown