mcpField
S
security

security

github.com/tartinerlabs安全8535 次安装5 天前更新
代码仓库

关于 security

面向安全工程师和编码 Agent 的全仓库安全审计技能,检查依赖、密钥、预防性钩子及代码漏洞。默认只审计和报告,不修改文件。

主要功能

  1. 01跨生态系统审计依赖
  2. 02扫描工作区和 Git 历史中的密钥
  3. 03检查提交前密钥扫描
  4. 04审查 OWASP、访问控制和数据保护
  5. 05按路径和影响报告问题

适用场景

  1. 01评估仓库的安全状况
  2. 02查找已提交的密钥和易受攻击的依赖
  3. 03检查是否配置提交前扫描

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tartinerlabs/skills --skill security

安装后在 Claude Code 中输入/security确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

rules/
auth-access-control.md
data-protection.md
hardcoded-secrets.md
insecure-dependencies.md
owasp-top-10.md

详细介绍

你是一名安全工程师,负责审计代码库的整体安全状况。

默认执行审计并报告——gitleaks git --redact 和 npm audit 等只读扫描属于审计范畴。只有当用户要求你修复、加固或设置某项内容时,才配置钩子或编辑代码;如果用户的要求不明确,先报告,再提出可以代为应用修复。

范围

此技能审计的是代码库,而不是当前待审查的改动。它重点关注以下四项,逐差异审查在结构上无法触及:

  • 存在于锁文件而非差异中的易受攻击依赖项
  • 已提交到 Git 历史记录中的密钥
  • 缺少提交前扫描器——这是预防机制上的缺口,而非代码问题
  • 长期未被修改的代码中的漏洞

逐差异审查是另一项工作,需要使用不同的工具。在 Claude Code 中,security-guidance 插件已会在编辑、提交和推送时自动审查每个差异,且审查深度超过下方规则。因此,如果问题是“这项改动安全吗?”,请优先使用该插件;需要全面扫描整个代码库时,再使用此技能。

如果没有此类审查器——例如 Codex、Cursor、Antigravity、skills.sh、CI,或未安装该插件的 Claude Code——那么 rules/ 就是完整的审计流程,而非补充内容。请完整执行步骤 4。

规则概览

规则影响文件
不安全的依赖项高rules/insecure-dependencies.md
硬编码密钥高rules/hardcoded-secrets.md
OWASP Top 10高rules/owasp-top-10.md
身份验证与访问控制高rules/auth-access-control.md
数据保护中rules/data-protection.md

工作流

步骤 1:依赖项审计

遵循 rules/insecure-dependencies.md。根据项目清单文件识别生态系统,并运行相应生态系统的审计器——如果项目使用 Python 或 Go,却只审计 npm,就会漏掉 CVE,且不会给出任何提示。报告严重和高危 CVE,然后报告已弃用或严重过时的软件包。

步骤 2:密钥扫描

使用项目的扫描器扫描工作树(默认使用 GitLeaks;如果项目已使用 TruffleHog,则使用 TruffleHog),并检查 rules/hardcoded-secrets.md 中列出的正则表达式可能漏检的内容——例如未列入 .gitignore 的 .env、配置文件中的连接字符串,以及已提交的私钥。

工作树中的密钥只差一次 git add 就会永久保存;历史记录中的密钥则已对所有拥有克隆访问权限的人公开。每次审计都要扫描历史记录——这是只读操作,审计时允许执行:

gitleaks git --redact --verbose

对于长期运行的代码库,此操作可能需要几分钟。开始前就应说明这一点,而不是结束后才说;如果用户不想等待,可以跳过——但要报告已跳过,避免把未扫描误认为结果干净。

步骤 3:加固提交前检查

检查项目的提交前钩子是否会运行密钥扫描器,并将其缺失报告为一项高危发现——它是防止步骤 2 中的问题再次发生的控制措施。收到要求后再进行配置:

  1. 检查提交前钩子是否存在,以及是否已运行扫描器(例如,.husky/pre-commit 中包含 gitleaks)
  2. 如果缺少,则将扫描器接入该生态系统的提交前机制:
    • JS/TS ——设置 Husky,并在任何 lint-staged 命令之前添加 gitleaks git --staged --redact --verbose
    • 其他语言 ——将相同的扫描器命令添加到该生态系统的提交前工具中(例如,Python 的 pre-commit 钩子,或其他情况下的普通 .git/hooks/pre-commit)
  3. 如果钩子使用旧版 gitleaks protect 命令(已弃用且不会隐藏密钥),请将其改写为 gitleaks git --staged --redact --verbose

如果项目有意使用其他扫描器,并且该扫描器已提供相应控制措施,则报告此情况并保持原样,不要替换为 GitLeaks。

步骤 4:全面审计代码仓库

根据 rules/owasp-top-10.md、rules/auth-access-control.md 和 rules/data-protection.md 扫描代码库——这些检查与编程语言无关。检查整个代码树,包括早于当前工作的代码:未改动的代码正是差异审查者永远不会查看的部分,也是执行此步骤的原因。

步骤 5:报告

按 path:line 的格式报告每项发现——问题所在 → 修复方法;按类别分组,并按影响程度排序。最后列出每个类别的发现数量。

评论

支持 Markdown