尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Security Reviewer 技能深度解析:用 Claude Code 构建自动化代码安全审计与漏洞扫描工作流

Security Reviewer 技能深度解析:用 Claude Code 构建自动化代码安全审计与漏洞扫描工作流 Security Reviewer 技能深度解析用 Claude Code 构建自动化代码安全审计与漏洞扫描工作流【免费下载链接】claude-skills67 Specialized Skills for Full-Stack Developers. Transform Claude Code into your expert pair programmer.项目地址: https://gitcode.com/GitHub_Trending/claud/claude-skills在 claude-skills 仓库的 67 个专业化技能中security-reviewer是专为代码安全审计设计的 Specialist 型技能它能将 Claude Code 转化为一名安全分析师完成从攻击面测绘、SAST/依赖/密钥扫描到手工复核、CVSS 分级、最终出具结构化审计报告的完整闭环。读完本文你将掌握如何用它组织一次规范的安全审计含授权边界确认如何按语言选择 SAST 工具以及如何识别并修复 SQL 注入、XSS、路径穿越等七类高危漏洞并把审计结果输出为管理层可直接决策的报告。技能定位一个只审查、不实现的安全专家security-reviewer的元信息frontmatter明确刻画了它的边界。以 skills/security-reviewer/SKILL.md 的 YAML 头为例name: security-reviewer description: Identifies security vulnerabilities, generates structured audit reports with severity ratings, and provides actionable remediation guidance... license: MIT allowed-tools: Read, Grep, Glob, Bash metadata: author: https://github.com/Jeffallan version: 1.1.1 domain: security role: specialist scope: review output-format: report related-skills: secure-code-guardian, code-reviewer, devops-engineer, cloud-architect, kubernetes-specialist, api-designer, mcp-developer三个字段最能说明定位差异role: specialistscope: review它只负责发现并描述问题不负责写修复代码。仓库中与之互补的是secure-code-guardianskills/secure-code-guardian/SKILL.md其scope: implementation、output-format: code专长是实际落地安全代码bcrypt 哈希、参数化查询、Zod 校验、JWT 白名单算法等。典型配合是reviewer 审计发现问题 → guardian 实施修复。output-format: report技能承诺的最终产物是结构化报告而不是补丁这决定了它的审计本质。allowed-tools: Read, Grep, Glob, Bash工具面受限配合外部安全工具semgrep、gitleaks、nmap 等通过 Bash 执行扫描是编排者而非实现者。从仓库的渐进式披露架构Progressive Disclosure看见 CLAUDE.mdSKILL.md 是第一层——只保留角色定义、触发条件、五步工作流、约束清单和到参考文件的路由表深度的技术内容全部下放到第二层 reference 文件每个 100–600 行仅在需要时按上下文加载以实现 token 节省。何时启用六大触发场景skills/security-reviewer/SKILL.md 的triggers元数据与 When to Use This Skill 一节给出了清晰的启用条件代码审查与 SAST 扫描对整个代码库或变更集跑静态分析漏洞扫描与依赖审计检查第三方依赖中的已知 CVE密钥泄露扫描与凭据检测在源码、Git 历史、配置文件里找硬编码密码、Token渗透测试与侦察对授权目标做信息收集、主动探测与 PoC 验证基础设施与云安全审计IaC 模板、容器镜像、云账号配置审查DevSecOps 流水线与合规自动化把扫描步骤嵌入 CI/CD对齐 SOC 2、ISO 27001 等框架。技能还声明了与secure-code-guardian、code-reviewerskills/code-reviewer/SKILL.md、devops-engineer、cloud-architect、kubernetes-specialist、api-designer、mcp-developer的关联关系方便 Agent 按需切换到相邻专业。五步核心工作流技能的核心方法论是五步流水线每一步都有明确的产出与安全前提1. Scope —— 测绘攻击面并确认授权先画出应用或系统的攻击面与关键路径明确审查范围。这里有一条前置硬性要求在进入任何主动测试之前必须确认书面的测试授权与交战规则Rules of Engagement。没有授权后面的所有步骤都不允许开始。2. Scan —— 自动化工具先行运行 SAST、依赖审计与密钥扫描工具。SKILL.md 给出了可直接执行的命令基线semgrep --configauto . # 通用多语言 SAST bandit -r ./src # Python 专用 gitleaks detect --source. # Git 历史/文件树密钥扫描 npm audit --audit-levelmoderate # Node.js 依赖漏洞 trivy fs . # 文件系统全面扫描漏洞密钥配置3. Review —— 手工复核不可省略Tools miss context — manual review is mandatory.工具会遗漏上下文——手工审查是强制性的。自动化工具只能命中模式判断不了业务上下文某个看似高风险的dangerouslySetInnerHTML是否处理过可信数据、某个内网 API 是否真的暴露在外。这一步重点人工核查认证、输入处理和密码学实现。4. Test and classify —— 验证与分级再次强调授权任何主动测试前都要验证书面范围授权。对自动扫描的发现做误报剔除与可利用性确认并按 CVSS 分五级Critical/High/Medium/Low/Info定级。关键约束是PoC 仅用于证明可利用严禁越界利用——能证明注入存在即可不去拖库、不改数据。5. Report —— 定稿前与干系人确认输出报告前与相关干系人确认发现清单每条发现给出位置、影响、修复建议高危发现必须立即上报不等最终报告。按需加载的参考指南SKILL.md 维护了一张路由表Agent 根据上下文加载对应深度材料主题参考文件加载时机SAST 工具references/sast-tools.md运行自动化扫描漏洞模式references/vulnerability-patterns.mdSQL 注入、XSS、手工复核密钥扫描references/secret-scanning.mdGitleaks、查找硬编码密钥渗透测试references/penetration-testing.md主动测试、侦察、利用验证基础设施安全references/infrastructure-security.mdDevSecOps、云安全、合规报告模板references/report-template.md撰写安全报告约束清单MUST DO / MUST NOT DO技能把红线固化成两条清单这是 Agent 在执行审计时的行为契约。必须做MUST DO先检查认证/授权自动工具先于手工审查每条发现给出具体文件/行号每条发现附带修复建议分级口径保持一致检查代码中的密钥主动测试前核实范围与授权记录全部测试活动遵守交战规则高危发现立即上报。禁止做MUST NOT DO跳过手工审查工具会漏报未经授权在生产系统测试忽视低危问题假设框架已经处理了一切公开分享详细利用方法利用超出 PoC 范围造成服务中断或数据丢失在定义范围之外测试。SAST 工具矩阵按语言与场景选型references/sast-tools.md 给出了完整命令集。JavaScript / TypeScriptnpm audit # 依赖漏洞 npm audit --json npm-audit.json # 导出 JSON 供报告引用 npm install eslint-plugin-security --save-dev npx eslint --ext .js,.ts . --plugin security npx snyk test # Snyk 开源漏洞 npx snyk code test # Snyk Code SASTPythonpip install bandit bandit -r . -f json -o bandit-report.json # 全量扫描并输出 JSON 报告 bandit -r . -ll # 只看高危-ll pip install safety safety check # 依赖安全 safety check -r requirements.txt --json safety-report.jsonGogo install github.com/securego/gosec/v2/cmd/goseclatest gosec ./... gosec -fmtjson -outgosec-report.json ./... go install golang.org/x/vuln/cmd/govulnchecklatest govulncheck ./... # 依赖漏洞数据库多语言通用工具pip install semgrep semgrep --configauto . # 自动规则集 semgrep --configp/security-audit . # 安全审计规则集 semgrep --configp/owasp-top-ten . # 对齐 OWASP Top 10 brew install trivy trivy fs . # 文件系统扫描 trivy fs --security-checks vuln,secret,config .CI/CD 集成GitHub Actions 可编排三个扫描步骤Semgrepreturntocorp/semgrep-actionv1、npm audit失败门槛--audit-levelhigh、Trivyaquasecurity/trivy-actionmasterseverity: CRITICAL,HIGH。GitLab CI 则可用 Semgrep 官方镜像输出--json并挂到artifacts.reports.sast实现原生 SAST 报告接入。完整 YAML 见 references/sast-tools.md。选型速查表语言 → 主工具 → 依赖检查JavaScript/TypeScript → ESLint security 插件 / npm auditPython → Bandit / SafetyGo → GoSec / govulncheckJava → SpotBugs / OWASP Dependency-CheckRuby → Brakeman / bundler-audit。工具定位上Semgrep 多语言且支持自定义规则适合作通用 SAST 基线Trivy 集容器代码密钥扫描于一身适合作综合检查Bandit、GoSec 则是对应语言项目的首选。七类高危漏洞的模式库与修复范式references/vulnerability-patterns.md 用易错写法 vs 安全写法对照的方式覆盖了 Web 安全最高频的七类漏洞。SQL 注入参数化是唯一可靠防线// 有漏洞字符串拼接 const query SELECT * FROM users WHERE id ${userId}; const query SELECT * FROM users WHERE name ${name}; // 安全参数化查询 const query SELECT * FROM users WHERE id $1; db.query(query, [userId]); // 安全使用 ORM const user await User.findOne({ where: { id: userId } });这与secure-code-guardian中永远不要把用户输入插值进 SQL的立场一致skills/secure-code-guardian/SKILL.md 中getUserByEmail的$1占位写法可互为印证。XSS按渲染上下文选择编码策略// 有漏洞直接注入 HTML element.innerHTML userInput; document.write(userInput); // 安全文本节点自动转义 element.textContent userInput; // 安全显式消毒 import DOMPurify from dompurify; element.innerHTML DOMPurify.sanitize(userInput); // 安全React 默认转义 return div{userInput}/div; // 有漏洞React 显式跳过转义 return div dangerouslySetInnerHTML{{ __html: userInput }} /;路径穿越basename resolve 前缀校验// 有漏洞直接拼接用户输入 const file path.join(uploadDir, req.query.filename); res.sendFile(file); // 安全取 basename 并归一化后校验 const filename path.basename(req.query.filename); const file path.resolve(uploadDir, filename); if (!file.startsWith(path.resolve(uploadDir))) { throw new Error(Invalid path); } res.sendFile(file);命令注入绕过 shell用数组参数// 有漏洞进入 shell 解释 exec(ls ${userInput}); exec(git clone repoUrl); // 安全不走 shell execFile(ls, [userInput]); spawn(git, [clone, repoUrl]); // 安全命令白名单 const allowedCommands [status, log]; if (!allowedCommands.includes(cmd)) throw new Error(Invalid);IDOR资源访问必须校验所有权// 有漏洞任何人可读任意文档 app.get(/documents/:id, async (req, res) { const doc await Document.findById(req.params.id); res.json(doc); }); // 安全把 userId 并入查询条件 app.get(/documents/:id, async (req, res) { const doc await Document.findOne({ _id: req.params.id, userId: req.user.id // 确保文档归属当前用户 }); if (!doc) return res.status(404).json({ error: Not found }); res.json(doc); });不安全反序列化拒绝 pickle/eval# 有漏洞pickle 可执行任意代码 import pickle data pickle.loads(user_input) # 安全改用 JSON import json data json.loads(user_input)// 有漏洞eval 执行任意表达式 const obj eval(( userInput )); // 安全JSON.parse const obj JSON.parse(userInput);敏感数据泄露日志脱敏与通用错误// 有漏洞日志记录明文口令 logger.info(User login, { email, password }); console.log(Token:, authToken); // 安全敏感字段脱敏 logger.info(User login, { email, password: [REDACTED] }); // 有漏洞错误响应泄露调用栈 res.status(500).json({ error: err.stack }); // 安全对外只返回通用错误 res.status(500).json({ error: Internal server error });快速对照与 OWASP 映射漏洞输入向量预防手段SQL 注入查询参数参数化查询XSS用户内容输出编码路径穿越文件路径path.basename 校验命令注入shell 参数execFile不走 shellIDOR资源 ID授权检查反序列化序列化数据仅用 JSON数据泄露日志、错误脱敏、通用错误并按 OWASP Top 102021归档A01 Broken Access Control → IDOR、路径穿越A02 加密失败 → 弱加密、明文A03 Injection → SQL/XSS/命令注入A04 不安全设计 → 缺失认证、IDORA05 安全配置错误 → 调试模式、默认凭据A06 易受攻击组件 → 过期依赖A07 认证失败 → 弱口令、会话问题A08 数据完整性 → 不安全反序列化A09 日志记录失败 → 缺日志、数据泄露A10 SSRF → 未校验 URL。密钥泄露扫描工具、正则与处置流程references/secret-scanning.md 覆盖了从工具链到补救的完整链路。Gitleaksbrew install gitleaks gitleaks detect --source . --verbose # 扫描当前目录 gitleaks detect --source . -f json -r gitleaks-report.json # 输出 JSON 报告 gitleaks detect --source . --log-opts--all # 扫全部 Git 历史 gitleaks detect --baseline-path .gitleaks-baseline.json # 基线排除已知项TruffleHogpip install trufflehog trufflehog filesystem . # 文件系统扫描 trufflehog git file://. --since-commit HEAD~100 # 扫描最近 100 次提交 trufflehog filesystem . --json trufflehog-report.json手工 grep 正则兜底grep -rn api_key\|apikey\|api-key --include*.{ts,js,py} . grep -rn secret\|password\|passwd --include*.{ts,js,py} . grep -rn private_key\|privatekey --include*.{ts,js,py} . grep -rn access_token\|accesstoken --include*.{ts,js,py} . grep -rn AKIA[0-9A-Z]{16} . # AWS Access Key grep -rn [A-Za-z0-9/]{40,} . # 疑似 Base64 密钥 grep -rn eyJ[A-Za-z0-9_-]*\.eyJ[A-Za-z0-9_-]*\. . # JWT常见密钥模式速查类型模式示例AWS Access KeyAKIA[0-9A-Z]{16}AKIAIOSFODNN7EXAMPLEAWS Secret Key40 位 Base64wJalrXUtnFEMI/K7MDENG...GitHub Tokenghp_[A-Za-z0-9]{36}ghp_xxxxxxxxxxxxSlack Tokenxox[baprs]-xoxb-xxx-xxxStripe Keysk_live_[A-Za-z0-9]{24}sk_live_xxxx私钥-----BEGIN.*PRIVATE KEY-----RSA/EC 密钥JWTeyJ[A-Za-z0-9_-]*\.eyJ编码后的 Token左移pre-commit 钩子与 CI/CD# .pre-commit-config.yaml repos: - repo: https://github.com/gitleaks/gitleaks rev: v8.18.0 hooks: - id: gitleaksCI 侧可用gitleaks/gitleaks-actionv2GitHub Actions或在 GitLab CI 中以 SARIF 格式上报secret_detection。泄露后的五步处置立即轮换——已泄露的密钥一律视为已落入敌手从历史中清除——用git filter-branch或 BFGbfg --replace-text passwords.txt repo.git加入 .gitignore——防止再次提交改用环境变量——把密钥移出代码使用密钥管理器——AWS Secrets Manager、HashiCorp Vault 等。渗透测试方法论与安全边界references/penetration-testing.md 给出了侦察、Web/API/网络/移动/云测试到利用验证的完整打法同时用交战规则牢牢框住边界。侦察被动→主动dig example.com ANY # DNS 枚举 subfinder -d example.com # 子域发现 amass enum -d example.com curl -s https://crt.sh/?q%.example.comoutputjson # 证书透明日志 nmap -sV -p- target.com # 全端口版本扫描 nmap -sC -sV -oA scan target.com whatweb target.com # Web 技术栈识别Web 应用测试要点会话分析检查会话超时、Secure/HttpOnly标志、会话固定、并发会话IDOR 测试GET /api/users/123自己的 ID→GET /api/users/124他人 ID应当失败提权测试以普通用户身份请求GET /api/admin/users注入 payloadSQLi 用sqlmap -u http://target.com/search?qtest --batchXSS 用scriptalert(document.domain)/script、img srcx onerroralert(1)命令注入测; ls -la、| whoami、$(whoami)XXE 用带file:///etc/passwd外部实体的 DOCTYPE。API 与 JWTecho eyJ... | base64 -d # 解码 JWT hashcat -m 16500 jwt.txt wordlist.txt # 弱密钥爆破同时注意三类问题速率限制缺失连续 1000 次登录请求不被拦截、过度数据暴露/api/users/me返回密码哈希、内部 ID、批量赋值POST {email: ..., isAdmin: true}。网络、移动、云Linux 提权看 SUIDfind / -perm -4000 -type f、sudo -l、PATH 可写目录、内核漏洞uname -asearchsploit横向移动用arp -a、netstat -ant、子网扫描。Android 用apktool d/jadx -d反编译后搜密钥、检查不安全存储iOS 用class-dump与 sqlite 检查缓存库。云侧包括 S3 桶匿名枚举aws s3 ls s3://bucket --no-sign-request、IAM 枚举以及 Docker/K8s 的kubectl get secrets --all-namespaces、kubectl auth can-i --list。利用验证与交战规则PoC 必须安全地证明存在SQL 注入用 OR SLEEP(5)--验证延时或用 UNION SELECT proof_of_concept--证明可读——绝不提取真实数据、绝不删除/修改生产数据。交战规则八条范围验证、遵守测试时间窗、避免资源耗尽防 DoS、不窃取真实数据、发现即停不超过 PoC、关键发现立即上报、记录所有操作、清理测试产物。严重度分级标准严重度可利用性影响CVSS 区间Critical容易完全沦陷9.0–10.0High中等重大访问权限7.0–8.9Medium困难有限访问4.0–6.9Low极难影响极小0.1–3.9对应影响画像Critical RCE/全量数据访问/管理员接管High 认证绕过/提权/敏感数据泄露Medium CSRF/非管理员 XSS/信息泄露Low 缺失安全头、冗余报错、限流问题。基础设施安全DevSecOps、云与合规references/infrastructure-security.md 把审查视野从应用代码扩展到基础设施即代码、容器、云与合规。IaC 扫描与云加固checkov -d terraform/ --framework terraform # Terraform 安全扫描 tfsec terraform/ terrascan scan -d terraform/ kubesec scan deployment.yaml # K8s 清单扫描 aws guardduty create-detector --enable # AWS 威胁检测 aws securityhub enable-security-hub aws iam update-account-password-policy \ --minimum-password-length 14 --require-symbols \ --require-numbers --require-uppercase-characters \ --require-lowercase-characters容器与 Kubernetes 加固安全 Dockerfile 的关键步骤非 root 运行RUN addgroup/adduserUSER nodejs、npm ci --onlyproduction精简依赖、显式EXPOSE与HEALTHCHECK。K8s 侧给出两层示范Pod 的securityContextrunAsNonRoot、readOnlyRootFilesystem、drop: [ALL]、seccompRuntimeDefault、资源 limit与默认拒绝的NetworkPolicypolicyTypes: [Ingress, Egress]且空podSelector。合规自动化CIS 基准Docker 用docker/docker-bench-security、K8s 用kube-bench run --targets master,node、系统加固用lynis audit system --quick。合规即代码InSpec可把要求写成断言例如sshd_config的Protocol2、PermitRootLoginno、PasswordAuthenticationno以及 S3 桶默认加密的检查。密钥管理Vault 动态凭据Vault 支持vault kv put静态密钥更进阶的是数据库动态凭据配置 PostgreSQL 插件与连接 URL 后用vault write database/roles/app定义创建角色语句与 TTLdefault_ttl1h max_ttl24h应用拿到的是一次性、有生命周期、可审计的数据库账号。K8s 侧可通过 External Secrets Operator 的SecretStore对接 Vault与ExternalSecret把远程密钥同步为集群 Secret支持refreshInterval落地。监控与合规框架Filebeat 示例把/var/log/auth.log与 nginx 日志按environment: production打标后送入 Elasticsearch形成 SIEM 数据源。合规框架速查SOC 2 关注安全控制访问、加密、监控ISO 27001 关注 ISMS策略、风险、审计PCI DSS 关注支付安全网络分段、加密HIPAA 关注医疗数据加密、访问日志GDPR 关注隐私同意、留存、DLP。审计报告模板与严重度定义references/report-template.md 提供了可直接套用的 Markdown 报告骨架SKILL.md 要求输出四层结构管理层摘要含风险评估、发现汇总表按严重度计数、详细发现位置/影响/修复、优先级建议。单条发现的规范格式SKILL.md 给出的示例条目定义了每条发现的最小信息集ID: FIND-001 Severity: High (CVSS 8.1) Title: SQL Injection in user search endpoint File: src/api/users.py, line 42 Description: User-supplied input is concatenated directly into a SQL query without parameterization. Impact: An attacker can read, modify, or delete database contents. Remediation: Use parameterized queries or an ORM. Replace cursor.execute(fSELECT * FROM users WHERE name{name}) with cursor.execute(SELECT * FROM users WHERE name%s, (name,)). References: CWE-89, OWASP A03:2021完整模板还包含Executive Summary 表应用/日期/审查人/范围/整体风险级、Findings Summary 计数表、带 CWE 与 CVSS 的 Detailed Findings描述→漏洞代码→PoC→影响→修复→工作量/优先级、自动化扫描结果依赖漏洞表 各 SAST 工具的分级计数以及按立即/短期/长期排序的 Recommendations 与附录工具清单、参考标准。响应时限定义严重度CVSS 分数响应时限Critical9.0–10.0立即High7.0–8.924–48 小时Medium4.0–6.91–2 周Low0.1–3.9下一个版本技能生态中的协作位security-reviewer不是孤立存在的。在仓库的技能编排中审查阶段由它出报告修复阶段由secure-code-guardianskills/secure-code-guardian/SKILL.md实现安全代码DevSecOps 落地与云加固由devops-engineer、cloud-architect、kubernetes-specialist承担API 安全语境下则与api-designer协作。这种审查—实现—运维的分工加上 CLAUDE.md 中定义的渐进式披露与参考文件规范正是该仓库 67 个技能能被 Agent 可靠调用的设计基础。实践建议首次使用可从三步起步——先跑semgrep --configauto .与gitleaks detect --source .建立基线扫描再针对命中项对照本文漏洞模式库做手工复核最后按报告模板输出带 CVSS 分级与修复建议的审计结果待流程成熟后再接入 CI/CD把 High/Critical 设为流水线失败门槛。【免费下载链接】claude-skills67 Specialized Skills for Full-Stack Developers. Transform Claude Code into your expert pair programmer.项目地址: https://gitcode.com/GitHub_Trending/claud/claude-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表