关于 ln-621-security-boundary-auditor
面向应用代码库的安全审计 Worker,检查密钥、注入、XSS 和输入验证等可利用的安全边界。它输出结构化问题和安全合规评分,但不会自动修改代码。
主要功能
- 01扫描硬编码密钥
- 02检查 SQL 注入和 XSS 风险
- 03审查敏感环境变量默认值
- 04检查边界输入验证
- 05生成问题报告与合规评分
适用场景
- 01发布前审查应用安全
- 02查找源代码中暴露的凭据
- 03检查 API 路由是否缺少验证
- 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.mdaudit_scoring.mdaudit_summary_contract.mdaudit_worker_core_contract.mdmcp_integration_patterns.mdmcp_tool_preferences.mdsecurity_rules.mdtwo_layer_detection.mdreferences/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。
- 解析上下文: 从
contextStore中提取技术栈、最佳实践、代码库根目录和 output_dir - 扫描代码库(第 1 层): 使用 Glob/Grep 模式运行安全检查(参见下方的审计规则)
- 分析上下文(第 2 层): 阅读每个候选项的周边代码并分类:
- 密钥:测试夹具 / 示例 / 模板 -> 误报。生产代码 -> 已确认
- SQL 注入:附近使用 ORM 参数化 -> 误报。将用户输入与原始字符串拼接 -> 已确认
- XSS:框架会自动转义(React JSX、Go 模板)-> 误报。不安全上下文(
innerHTML、| safe)-> 已确认 - 敏感默认值:占位符 / 示例 -> 跳过。密钥 / 令牌 / 密钥的实际回退值 -> 已确认
- 验证:服务间内部端点 -> 降级处理。公共 API -> 已确认
- 收集发现: 记录已确认的违规项,包括严重程度、位置(文件:行号)、工作量估算(S/M/L)和建议
- 计算评分: 按严重程度统计违规项,计算合规评分(X/10)
- 编写报告: 按照
references/templates/audit_worker_report_template.md在内存中生成完整 Markdown 报告,并通过一次 Write 调用写入{output_dir}/ln-621--global.md - 返回摘要: 返回最简摘要(参见输出格式)
审计规则(优先级:严重)
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 调用) - 已按约定撰写摘要
参考文件
- 审计输出架构:
references/audit_output_schema.md - 安全审计规则:references/security_rules.md
版本: 3.0.0 最后更新: 2025-12-23