mcpField
L
ln-621-security-boundary-auditor

ln-621-security-boundary-auditor

github.com/levnikolaevich安全58480 次安装2 天前更新
代码仓库

关于 ln-621-security-boundary-auditor

面向应用代码库的安全审计 Worker,检查密钥、注入、XSS 和输入验证等可利用的安全边界。它输出结构化问题和安全合规评分,但不会自动修改代码。

主要功能

  1. 01扫描硬编码密钥
  2. 02检查 SQL 注入和 XSS 风险
  3. 03审查敏感环境变量默认值
  4. 04检查边界输入验证
  5. 05生成问题报告与合规评分

适用场景

  1. 01发布前审查应用安全
  2. 02查找源代码中暴露的凭据
  3. 03检查 API 路由是否缺少验证
  4. 04生成结构化安全审计报告

MCP 相关

该 Skill 优先使用 hex-line MCP 读取和搜索本地文件,并在有助于数据流分析时使用 hex-graph。MCP 不可用或不适用时,会改用内置工具并在报告中说明。

安装

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

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-621-security-boundary-auditor

安装后在 Claude Code 中输入/ln-621-security-boundary-auditor确认已加载。

包含的文件

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

references/
audit_output_schema.md
audit_scoring.md
audit_summary_contract.md
audit_worker_core_contract.md
mcp_integration_patterns.md
mcp_tool_preferences.md
security_rules.md
two_layer_detection.md
references/templates/
audit_worker_report_template.md

详细介绍

路径: 文件路径(references/、../ln-*)均相对于此技能目录。

安全边界审计器(L3 Worker)

类型: L3 Worker

专门审计可被利用的应用安全边界的 Worker。

目的与范围

  • 审计代码库中的安全边界漏洞(类别 1:最高优先级)
  • 扫描硬编码密钥、SQL 注入、XSS、缺少输入验证和敏感环境变量默认值
  • 发出 HARDEN_SECURITY_BOUNDARY、REMOVE_SECRET 或 REMOVE_SENSITIVE_DEFAULT
  • 返回包含严重程度、位置、工作量、操作和建议的结构化发现
  • 计算安全类别的合规评分(X/10)

输入

必须阅读: 加载 references/audit_worker_core_contract.md 和 references/mcp_tool_preferences.md。 工具策略:你可能作为独立子 Agent 运行,此时宿主的 AGENTS.md 不在适用范围内,因此读取文件、搜索和编辑时应优先使用 hex-line MCP。仅当 MCP 行为不明确时,才加载 references/mcp_integration_patterns.md。

接收包含以下内容的 contextStore:tech_stack、best_practices、principles、codebase_root、output_dir。

如果数据流或跨文件引用分析能显著提高置信度,优先使用 hex-graph。如果可用,读取本地代码时优先使用 hex-line。如果 MCP 不可用、不支持相关操作或未建立索引,则使用内置的 Read/Grep/Glob/Bash 继续,并在报告中说明回退情况。

工作流

检测策略:采用双层检测(候选扫描,然后上下文验证);仅当验证方法不明确时,才加载 references/two_layer_detection.md。

  1. 解析上下文: 从 contextStore 中提取技术栈、最佳实践、代码库根目录和 output_dir
  2. 扫描代码库(第 1 层): 使用 Glob/Grep 模式运行安全检查(参见下方的审计规则)
  3. 分析上下文(第 2 层): 阅读每个候选项的周边代码并分类:
    • 密钥:测试夹具 / 示例 / 模板 -> 误报。生产代码 -> 已确认
    • SQL 注入:附近使用 ORM 参数化 -> 误报。将用户输入与原始字符串拼接 -> 已确认
    • XSS:框架会自动转义(React JSX、Go 模板)-> 误报。不安全上下文(innerHTML、| safe)-> 已确认
    • 敏感默认值:占位符 / 示例 -> 跳过。密钥 / 令牌 / 密钥的实际回退值 -> 已确认
    • 验证:服务间内部端点 -> 降级处理。公共 API -> 已确认
  4. 收集发现: 记录已确认的违规项,包括严重程度、位置(文件:行号)、工作量估算(S/M/L)和建议
  5. 计算评分: 按严重程度统计违规项,计算合规评分(X/10)
  6. 编写报告: 按照 references/templates/audit_worker_report_template.md 在内存中生成完整 Markdown 报告,并通过一次 Write 调用写入 {output_dir}/ln-621--global.md
  7. 返回摘要: 返回最简摘要(参见输出格式)

审计规则(优先级:严重)

1. 硬编码密钥

内容: 源代码中的 API 密钥、密码、令牌和私钥

检测:

  • 搜索模式:API_KEY = "..."、password = "..."、token = "..."、SECRET = "..."
  • 文件扩展名:.ts、.js、.py、.go、.java、.cs
  • 排除:.env.example、README.md、包含模拟数据的测试文件

严重程度:

  • 严重: 生产凭据(AWS 密钥、数据库密码、API 令牌)
  • 高: 开发 / 暂存环境凭据
  • 中: 非测试文件中的测试凭据

建议: 移至环境变量(.env),使用密钥管理工具(Vault、AWS Secrets Manager)

工作量: S(将硬编码值替换为 process.env.VAR_NAME)

2. SQL 注入模式

内容: 在 SQL 查询中使用字符串拼接,而非参数化查询

检测:

  • 模式:query = "SELECT * FROM users WHERE id=" + userId、db.execute(f"SELECT * FROM {table}")、`SELECT * FROM ${table}`
  • 语言:JavaScript、Python、PHP、Java

严重性:

  • 严重: 直接拼接用户输入,且未进行清理
  • 高: 在生产代码中拼接变量
  • 中: 仅拼接内部变量

建议: 使用参数化查询(预处理语句)、ORM 查询构建器

工作量: M(重构查询以使用占位符)

3. XSS 漏洞

内容: 在 HTML/模板中呈现未经清理的用户输入

检测:

  • 模式:innerHTML = userInput、dangerouslySetInnerHTML={{__html: data}}、echo $userInput;
  • 模板引擎:检查是否存在未转义的输出({{ var | safe }}、<%- var %>)

严重性:

  • 严重: 未经清理便将用户输入直接插入 DOM
  • 高: 对用户输入进行部分清理(转义不足)
  • 中: 内部数据遭到破坏时可能导致 XSS

建议: 使用框架的转义机制(React 会自动转义,使用 textContent),使用 DOMPurify 清理

工作量: S-M(将 innerHTML 替换为 textContent,或进行清理)

4. 敏感环境变量默认值

内容: 秘密、令牌、密钥、凭据或特权配置值存在不安全的代码默认值

检测:

  • 使用 grep 查找敏感名称对应的环境变量读取及其默认值:SECRET、TOKEN、KEY、PASSWORD、PRIVATE、CREDENTIAL
  • 检查配置/设置类中是否存在硬编码的敏感回退值
  • 排除 .env.example、测试、文档和明显的占位值(changeme、空字符串、example)

严重性:

  • 严重: 生产凭据回退值,或默认签名/加密秘密
  • 高: 部署的应用中可访问的运行时配置存在敏感默认值
  • 中: 测试专用文件之外的开发/暂存环境存在敏感默认值

建议: 移除敏感默认值,要求显式配置,并在启动时快速失败

工作量: S-M

5. 缺少输入验证

内容: 系统边界(API 端点、用户表单、文件上传)缺少验证

检测:

  • API 路由未使用验证中间件
  • 表单处理程序未清理输入
  • 文件上传未检查类型/大小
  • 缺少 CORS 配置

严重性:

  • 严重: 文件上传未经验证,存在绕过身份验证的可能
  • 高: 敏感端点(支付、身份验证、用户数据)缺少验证
  • 中: 只读或内部端点缺少验证

建议: 添加验证中间件(Joi、Yup、express-validator),实施输入清理

工作量: M(添加验证架构和中间件)

评分算法

必须阅读: 加载 references/audit_scoring.md。

输出格式

必须阅读: 加载 references/templates/audit_worker_report_template.md。

根据 references/audit_summary_contract.md 编写 JSON 摘要。在托管模式下,调用方会同时传入 runId 和 summaryArtifactPath;在独立模式下,工作器会根据共享契约生成自己的运行专属产物路径。

将报告写入 {output_dir}/ln-621--global.md,并设置 category: "Security Boundary",检查项为:hardcoded_secrets、sql_injection、xss_vulnerabilities、sensitive_env_defaults、missing_input_validation。

根据 references/audit_summary_contract.md 返回摘要。

独立模式仍会根据共享契约,将相同的 JSON 摘要写入工作器自行创建的运行专属产物路径。

关键规则

遵循已加载的 references/audit_worker_core_contract.md。

  • 不得自动修复: 仅报告违规项
  • 结合技术栈: 使用 contextStore 应用特定框架模式(例如,React XSS 与 PHP XSS)
  • 减少误报: 排除测试文件、示例配置和文档
  • 合理评估工作量: S = 少于 1 小时,M = 1-4 小时,L = 超过 4 小时
  • 精确定位: 始终包含 file:line,以便通过程序导航
  • 独特角度: 仅审计可被利用的应用安全边界。不审计软件包健康状况或环境同步。
  • 必须执行操作: 每项发现都使用 HARDEN_SECURITY_BOUNDARY、REMOVE_SECRET 或 REMOVE_SENSITIVE_DEFAULT。

完成定义

遵循已加载的 references/audit_worker_core_contract.md。

  • contextStore 已成功解析(包括 output_dir)
  • 已完成全部 5 项安全检查(机密、SQL 注入、XSS、敏感环境默认值、验证)
  • 已收集发现项及其严重性、位置、工作量和建议
  • 已使用惩罚算法计算评分
  • 已将报告写入 {output_dir}/ln-621--global.md(通过一次原子 Write 调用)
  • 已按约定撰写摘要

参考文件


版本: 3.0.0 最后更新: 2025-12-23

评论

支持 Markdown