SuperAPI AI 工具集

scan-code

安全与审计

查看项目

更新于 10-15 13:58

技能介绍

用途

scan-code 用于对 Power Pages 站点项目进行安全扫描,检查源代码和依赖项中可能存在的安全问题。它运行两类检查:一是对源代码的静态分析(使用 opengrep),二是对依赖项、密钥和许可证的扫描(使用 trivy),随后将发现的问题汇总呈现。

主要能力

  • 源代码安全检查:通过 opengrep 对项目源文件进行静态分析,识别常见风险与更深层的代码弱点。
  • 依赖与密钥、许可证检查:通过 trivy 扫描已安装的包、密钥泄露以及许可证问题。
  • 结果归一化:将两个工具产生的大量 JSON 输出转换为统一的发现列表({ status, findings } 结构)。
  • 报告生成:可将结果渲染为 HTML 报告,文件名包含本地时间戳,例如 code-scan-2026-05-14-053805.html。
  • 审查模式:支持 --review <out-dir> 参数,在此模式下跳过范围选择,以深入深度运行全部检查,并仅输出 JSON 文件。
  • 智能体替代审查:当所需工具未安装时,可提供由智能体使用 Glob/Read/Grep 直接阅读代码的替代审查方式(需用户主动选择,且会消耗大量 token)。

使用方式

  1. 前置检查:定位项目(查找 **/powerpages.config.json),并通过脚本检查工具是否可用。
  2. 选择范围:询问用户检查代码、依赖还是两者;若包含代码检查,再询问检查深度(深入或快速)。
  3. 运行扫描:分别运行 opengrep 与 trivy 脚本,将原始 JSON 输出保存到临时文件,再通过转换脚本归一化。
  4. 汇总:生成 HTML 报告(审查模式下仅写 JSON),用通俗语言总结发现总数、按类别计数以及优先查看项,并记录技能使用情况,最后根据发现提供后续技能建议。

相关脚本调用示例(保留原样):

node "${PLUGIN_ROOT}/skills/scan-code/scripts/check-tools.js"

node "${PLUGIN_ROOT}/skills/scan-code/scripts/run-opengrep.js" --projectRoot "<PROJECT_ROOT>" --rulesets "<comma-separated-rulesets>" > "<TEMP_DIR>/opengrep.json"

node "${PLUGIN_ROOT}/skills/scan-code/scripts/run-trivy.js" --projectRoot "<PROJECT_ROOT>" > "<TEMP_DIR>/trivy.json"

node "${PLUGIN_ROOT}/skills/scan-code/scripts/transform-scan-code.js" --opengrepFile "<TEMP_DIR>/opengrep.json" --trivyFile "<TEMP_DIR>/trivy.json" --projectRoot "<PROJECT_ROOT>"

适用场景

  • 在开发或发布 Power Pages 站点前,对项目进行安全检查。
  • 需要同时了解代码层面与依赖层面的安全风险。
  • 希望以非技术语言向用户呈现安全发现,并给出后续处理建议(如头部/ Cookie 问题、WAF/防火墙问题、权限问题、登录或外部身份问题等)。

限制与注意事项

  • 两个工具(opengrep 与 trivy)必须已安装在本地机器上;若缺失,只能提供智能体驱动的替代审查,且该方式需要用户主动同意,会读取大量文件并消耗大量 token。
  • 这些第三方开源工具可能依据其自身条款、隐私政策与数据处理方式收集或传输数据,微软无法控制;若选择 AI 替代方案,AI 服务会处理源代码。
  • opengrep 在存在发现时退出码为 1,这是正常行为而非错误。
  • trivy 的严重性标志仅影响漏洞发现;密钥与许可证发现始终返回,不受 --severity 标志影响。
  • 密钥值在任何地方都不会被完整显示,包括上下文、会话、聊天、日志、摘要、报告等,即使部分显示也不允许;需要展示时以掩码(如 ********)替代。
  • 面向用户的文本不得使用技术术语(如 opengrep、trivy、OWASP、CWE、静态分析、SAST、ruleset),应使用日常语言描述。
  • 建议不得破坏站点,不得建议放宽安全性,且应基于实际扫描结果而非通用建议。
  • 自定义规则:两个工具均支持自定义规则,但不会主动提供,仅在用户提供时使用。
  • 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。