ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

.NET Skill库安全机制完全清单:外部引用扫描、域名白名单与依赖准入一次讲透

.NET Skill库安全机制完全清单:外部引用扫描、域名白名单与依赖准入一次讲透 .NET Skill库安全机制完全清单外部引用扫描、域名白名单与依赖准入一次讲透【免费下载链接】skillsRepository for skills to assist AI coding agents with .NET and C#项目地址: https://gitcode.com/GitHub_Trending/skills17/skills️ 本文带你完整看懂dotnet/skills仓库为 AI 编码智能体技能Skills建立的三道安全防线外部引用扫描、域名白名单与依赖准入机制。这个仓库为 AI 编码智能体提供 .NET 和 C# 开发技能所有技能文件在安装前都会经过静态安全分析确保不会夹带未知域名、危险脚本或未经审查的外部依赖。为什么 AI 技能库需要安全机制技能文件SKILL.md会直接指导 AI 智能体执行操作读写文件、调用工具、引用外部链接。一旦技能内容中混入恶意链接或可疑脚本风险会被智能体照单全收。因此这个仓库内置了一套名为skill-validator的静态检查工具位于 eng/skill-validator/在不需要 LLM 的情况下用check子命令对每个插件、技能、智能体做安全体检。安全机制全清单一张表看懂#检查项防护目标核心文件1外部引用扫描逐行扫描技能内容中的 URL 与危险模式ReferenceScanner.cs2域名白名单只放行已知可信域名eng/known-domains.txt3依赖准入脚本、工具引用、MCP 服务器需白名单放行ExternalDependencyChecker.cs4依赖白名单记录已人工批准的例外项eng/allowed-external-deps.txt5静态检查入口无 LLM 的check命令统一执行CheckCommand.cs外部引用扫描逐行拦截四类风险外部引用扫描器会扫描所有SKILL.md、*.agent.md及references/目录下的 Markdown 文件逐行识别以下问题未知域名EXTERNAL-DOMAIN内容中出现的任何 URL其域名不在白名单中即被拦截并提示如果是有意引用请将其加入 known-domains 文件明文 HTTPHTTP-NOT-HTTPS非本地的http://链接一律标记强制使用 HTTPS管道即执行PIPE-TO-SHELL识别curl … | sh这类下载即执行的危险模式仅白名单中的 .NET 官方安装脚本可豁免无完整性校验的外部脚本SCRIPT-NO-SRIscript标签引用外部资源时必须带 SRI 完整性属性防止资源被篡改。扫描器还会智能跳过占位符域名如example.com、yourusername并正确处理代码围栏内的内容——围栏内放宽 HTTPS 检查但域名白名单检查依然生效兼顾了文档示例与实际链接的区分。域名白名单最小权限的引用管控eng/known-domains.txt 是引用扫描的信任根采用一行一个域名的极简格式按用途分组维护标准类dot.net、microsoft.com、modelcontextprotocol.io等工具类NuGet、Sysinternals 下载、符号服务器等特定工具域名平台类Android、Apple 开发者文档仓库类github.com/dotnet/*系列官方仓库精确到仓库路径前缀社区类Stack Overflow、xunit.net 等。白名单支持两种匹配粒度裸域名如microsoft.com会放行该域名及其全部子域名带斜杠的路径前缀如github.com/dotnet/runtime则只放行该前缀下的 URL实现更精细的管控。新增域名的流程也很清晰在 PR 中一并提交域名条目由评审人随技能内容一起批准。依赖准入四类外部依赖逐一过审外部依赖检查器负责结构层面的准入审查它关注的不是 URL而是技能对外部能力的结构性依赖捆绑脚本技能scripts/目录下的.ps1、.sh、.py等脚本文件会被标记——技能一般不应捆绑可执行脚本INVOKES 外部脚本技能描述中声明调用外部脚本的模式会被拦截审查非内置工具引用内容中#tool:引用的工具若不在内置工具清单read、search、bash、powershell 等中需人工确认其必要性MCP 服务器声明plugin.json中声明的 MCP 服务器会逐一检查确保每个服务器依赖都是有意为之。此外还有一个容易被忽略的跨宿主工具可移植性检查同一个能力在 Copilot CLI、Claude Code、Gemini CLI 三个宿主中的工具名拼写不同若智能体只为一个宿主声明了工具在其他宿主上会悄悄失能——检查器会主动提示补齐所有宿主的拼写。所有发现项均为建议级advisory作者可以有意保留依赖只需在 eng/allowed-external-deps.txt 白名单中登记类型:名称:细节格式的条目如script:技能名:脚本路径即可放行。该文件的注释明确写着当此文件清空且所有检查通过后这些检查将升级为硬性错误——这正是渐进式收紧安全策略的典型设计。一条命令跑通安全检查完成技能开发后用下面的命令对整个插件目录做安全体检无需 LLM、无需 tokenskill-validator check --plugin ./plugins/my-plugin \ --allowed-external-deps ./eng/allowed-external-deps.txt \ --known-domains ./eng/known-domains.txt完整的参数说明与使用示例见 eng/skill-validator/src/README.md测试用例可参考 tests/ 目录下各插件的eval.yaml。新手快速上手三步理解这套机制写技能→ 内容中只引用已知域名避免捆绑脚本和管道执行命令跑检查→check子命令会列出所有发现项并给出对应的白名单登记键做决策→ 保留依赖就登记到白名单移除依赖则直接删掉保持白名单随时间收敛。这套扫描—白名单—准入的三层设计让技能库既能保持开放生态又确保每一个外部引用都经过人工审查为 AI 编码智能体筑起了一道清晰的安全边界。【免费下载链接】skillsRepository for skills to assist AI coding agents with .NET and C#项目地址: https://gitcode.com/GitHub_Trending/skills17/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表