资讯详情

资讯详情

Skill Scanner架构全解:两阶段扫描流水线如何协同11个检测引擎

Skill Scanner架构全解两阶段扫描流水线如何协同11个检测引擎【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scannerSkill Scanner是一款面向 AI Agent Skills智能体技能包的开源安全扫描器。它用一条两阶段扫描流水线串联起11 个检测引擎——先由确定性引擎快速完成模式匹配与行为分析再让 LLM 分析引擎带着第一阶段的线索做语义级研判。本文将带你从零看懂这套架构为什么这样分阶段、每个引擎负责什么、以及如何按需组合使用。为什么 Agent Skills 需要专业安全扫描Agent Skills 通常由SKILL.md指令文件和配套脚本、二进制文件组成会被 AI Agent 直接执行。一个恶意技能包可能藏有提示注入、数据外传指令、混淆脚本甚至二进制载荷。单靠一种检测手段总有盲区正则签名抓不到语义上有害但字面上干净的指令LLM 又可能误报普通代码。Skill Scanner 的答案是分层多引擎协同——确定性引擎负责快而准语义引擎负责深而全两者通过流水线上下文接力。架构总览一张图看懂 Skill Scanner整个系统由三部分组成入口层CLIskill-scanner、FastAPI REST API、Pre-commit Hook三者共用同一套分析器工厂保证行为一致核心引擎SkillScanner编排器skill_scanner/core/scanner.pySkillLoader加载器skill_scanner/core/loader.py 可插拔的分析器集合数据层核心规则包YAML 签名 YARA 规则 Python 检查位于 skill_scanner/data/packs/core/、LLM 提示词模板skill_scanner/data/prompts/以及策略预设文件分析器的组装由唯一的真相来源——skill_scanner/core/analyzer_factory.py 完成build_core_analyzers()按策略构建核心引擎build_analyzers()再按命令行/API 开关追加可选引擎。完整的架构说明见官方文档 docs/architecture/index.md。两阶段扫描流水线从加载到报告流水线定义在 docs/architecture/scanning-pipeline.md共 7 个阶段。阶段 0加载与预处理SkillLoader负责验证技能目录、解析SKILL.mdfrontmatter、递归发现文件并分类Python/Bash/Markdown/二进制ContentExtractor则安全地解包技能中内嵌的 ZIP/TAR 归档同时防御 ZIP 炸弹、路径穿越、符号链接等经典解包攻击——解包结果直接并入分析范围。阶段 18 个确定性引擎火力全开所有非 LLM 引擎在这一阶段独立运行包括策略驱动的核心引擎和按开关启用的可选引擎引擎类型核心职责Static静态确定性YAML 签名 YARA 模式匹配覆盖提示注入、Unicode 走私、硬编码密钥等Bytecode字节码确定性校验.pyc与源码的一致性防止改了字节码没改源码的伪装Pipeline管道启发式Shell 命令链污点分析识别下载即执行等高危管道Behavioral行为AST/数据流Python 源码级数据流与跨文件关联分析VirusTotal外部情报二进制文件哈希信誉查询需 API KeyAI Defense外部服务Cisco 云端威胁信号分类需 API KeyOSV外部服务固定版本依赖的已知 CVE 查询免 KeyTrigger触发器启发式识别过于宽泛、模糊的技能描述静态引擎是主力内部按序执行约 20 轮检查清单校验 → 指令体签名 → 动态执行检测 → Unicode 走私 → YARA 扫描 → 文档/PDF/Office 结构分析等详见 docs/architecture/analyzers/static-analyzer.md。阶段 1.5CEL 决策层 裁决器第一阶段的候选发现会先做精确去重然后投影为有界的ScanFacts交由CEL 决策层做门控。它只能保留/抑制已有的候选发现不能凭空造出告警投影不完整或运行出错时一律 fail-open放行详见 docs/architecture/cel-decision-layer.md。紧接着的 **Adjudicator裁决器**会用 LLM 复核纯字面正则命中的高严重度发现只降不升——避免一条错误的高危误报进入下一阶段后被 LLM引用放大。阶段 2带上下文增强的 LLM 引擎这是两阶段设计最巧妙的地方。LLM 引擎LLM Analyzer和 Meta 引擎Meta-Analyzer刻意延后执行并先接收一份由阶段 1 结果构建的增强上下文文件清单总文件数、类型分布、未被引用的脚本魔术字节不匹配清单文件扩展名与实际内容不符静态引擎的前 10 条 CRITICAL/HIGH 级发现摘要可分析性评分与清单能力声明也就是说LLM 不是盲审而是拿着确定性引擎的线索做语义级意图分析如社会工程、隐蔽数据外传、多步攻击而 Meta 引擎则做最后一道误报过滤与优先级排序复核所有前序发现。后处理结果净化的最后闸门分析结束并非终点还要依次执行VirusTotal 已验证二进制的去重抑制 → 禁用规则过滤 → 严重度覆盖 →可分析性评分扫描器看不到的内容越多分数越低fail-closed 策略下会生成UNANALYZABLE_BINARY告警→ 发现归一化与去重 → 共现元数据标注 → 策略指纹附加。最后生成ScanResult输出为 summary/JSON/Markdown/Table/SARIF/HTML 六种格式之一。11 个检测引擎能力矩阵谁抓什么威胁11 个引擎的分工与威胁类别覆盖如下✓ 表示可产出该类发现来源 docs/architecture/analyzers/index.md威胁类别静态字节码管道行为LLM触发器VTAI Defense跨技能提示注入✓✓✓命令注入✓✓✓✓✓数据外传✓✓✓✓✓✓混淆✓✓✓✓✓✓硬编码密钥✓✓恶意软件✓✓社会工程✓✓✓✓✓有害内容✓同一类别有多个引擎覆盖意味着更强的检测纵深一个引擎漏掉的模式另一个可能接住。还有一个特殊角色——Cross-Skill Scanner跨技能扫描器。它不在单技能流水线内运行而是在scan-all --check-overlap时对整个技能集合做关联分析识别数据接力、共享外部 URL、互补触发器等同谋攻击模式接口见 skill_scanner/core/analyzers/cross_skill_scanner.py。如何按需组合从快速 CI 到最大覆盖11 个引擎并非全部强开。核心引擎随策略默认运行可选引擎按需激活场景推荐开关快速 CI 门禁仅核心引擎零配置单技能深度审查--use-llm --use-behavioral --use-trigger --enable-meta二进制密集型技能--use-virustotal依赖密集型技能--use-osv最大覆盖--use-llm --use-behavioral --use-trigger --use-virustotal --use-osv --enable-meta策略系统skill_scanner/core/scan_policy.py还提供 balanced默认/strict/permissive 三套预设外加严重度覆盖、禁用规则等 14 个可配置分区无需改代码即可调优。关键源码路径速查想深入源码时建议按此顺序阅读流水线编排skill_scanner/core/scanner.py两阶段循环的核心分析器工厂skill_scanner/core/analyzer_factory.py分析器基类skill_scanner/core/analyzers/base.pyLLM 引擎skill_scanner/core/analyzers/llm_analyzer.py行为引擎skill_scanner/core/analyzers/behavioral_analyzer.py扩展指南自定义规则docs/architecture/analyzers/writing-custom-rules.md功能总览与威胁能力矩阵docs/features/index.md总结Skill Scanner 的架构精髓可以概括为一句话让确定性引擎先跑、把线索交给语义引擎再用决策层和裁决器双向降噪。两阶段流水线让 11 个检测引擎各司其职又彼此增强——阶段 1 提供速度与证据阶段 2 提供深度与语义CEL 层与 Adjudicator 守住精度可分析性评分兜住盲区。对新手而言记住核心三引擎默认开、可选引擎按需开就足以开始使用对进阶用户源码中的SkillScanner编排逻辑是理解全貌的最佳入口。【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scanner创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →