把Shell权限交给LLM会出事吗Kiro Crew六层纵深防御安全模型完整指南【免费下载链接】KiroCrewA persistent workspace for development work that self-improves and continues beyond one session.项目地址: https://gitcode.com/gh_mirrors/ki/KiroCrewKiro Crew 是一个面向开发工作的持久化 AI 工作区它会以 LLM 智能体agent的身份在你的机器上执行 shell 命令、读写文件并且能跨会话持续自我改进。把 Shell 权限交给 LLM 当然可能出事——提示词注入prompt injection是真实威胁。Kiro Crew 为此设计了六层纵深防御安全模型OS 沙箱 → 文件系统关卡 → 命令关卡 → 输入校验 → 输出脱敏 → 审计日志官方在 security-deep-dive.md 中给出了完整的架构说明。本文带你逐层看懂这套防线。为什么这套安全模型值得认真看Kiro Crew 的智能体会读取网页、仓库文件、Slack 历史等内容。对操作员来说这些是数据对模型来说却可能被当成指令。官方威胁模型认定两类最危险的载荷凭证外泄credential exfiltration——比如偷走~/.aws、~/.ssh破坏性本地操作——删数据、动生产基础设施。所有防线都建立在三条原则之上摘自 架构文档模型是不可信输入不是可信调用方校验只看真实命令与解析后的路径不看模型自报的显示文本操作员可信智能体不可信你可以放宽自己的设置智能体不能替你放宽不假设任何单一层会守住偷一次凭证要同时打穿 OS 沙箱、路径关卡、命令关卡和输出脱敏。六层防线总览层级防线核心机制关键点Layer 5审计SELHMAC 链式安全事件日志篡改可被检测部分操作审计失败即拒绝Layer 4输出脱敏凭证正则 外泄 URL 扫描 流式脱敏器在输出到达任何人类/外部服务前拦截Layer 3输入校验声明式 MCP 工具 Schema、Unicode 归一化、长度上限防止隐藏字符与 DoSLayer 2命令关卡内置拒绝规则 敏感命令识别 外泄形态检测硬拒绝先于一切信任快路径Layer 1文件系统关卡解析后路径门读拦截 更宽写拦截符号链接无法绕过Layer 0OS 级沙箱Linux 用户/挂载命名空间 / macOS Seatbelt唯一可选层默认auto其中 Layer 1–4始终开启这正是 Layer 0 可以做成可选配置的原因。第0层操作系统级沙箱——失败即拒绝而不是降级沙箱负责把kiro-cli子进程树关进小黑屋Linux 用用户命名空间 挂载命名空间把凭证目录 bind-mask 掉macOS 用 Seatbelt 拒绝文件读并在进入前清洗带凭证的环境变量SSH_AUTH_SOCK也会被清掉ssh-agent 转发在沙箱内不可用。实现见 sandbox.py。几个对新手最重要的性质默认开启agent.sandbox默认值为auto是两层配置里唯一可关的层失败即拒绝fail-closed拿不到沙箱后端且模式不是off时直接拒绝启动而不是裸奔运行治理地板企业策略的sandbox.min_level会把请求的沙箱级别向上抬智能体无法把隔离关小。第1层文件系统关卡——智能体读不到自己的天花板is_sensitive_path()是共享的读写拦截器is_sensitive_write_path()是它的严格超集见 paths.py。路径匹配会检查符号链接完全解析后的目标——工作区里建一个指向被禁目录的软链接也会顺着链接被拒绝。这一层最妙的设计叫keystone基石治理信任根security_policy.json、profiles/、被拒命令配置、SEL 的 HMAC 密钥与事件日志、Dashboard 令牌签名密钥、渠道凭证.env全部落在读写都拦截名单里。 一句话后果企业天花板从智能体内部无法被禁用。智能体若能量读这些文件就能伪造令牌若能写就能把拒绝门关掉。第2层命令关卡——先拒绝再谈信任每次带 shell 的工具调用都会过三道独立检查对模型标题和原始命令同时校验逻辑在 hooks.py 的 PreToolUse 关卡内置拒绝规则BUILTIN_DENIED_RULES覆盖凭证外泄、破坏性基础设施操作、向受保护分支发布、以及自我保护智能体想关掉 Kiro Crew 或给自己签发 Dashboard 令牌敏感 bash 检测不是原始正则硬匹配而是先分词 归一化引号、空串拼接、$HOME/~展开再走路径判断——引号与展开技巧绕不过去外泄形态检测数据外发与反向 shell 的窄范围硬拒绝不误伤正常本地命令。⚠️ 顺序是这套系统的灵魂敏感路径检查与拒绝规则运行在任何自动批准auto-approve或信任快路径之前。你在 Dashboard 点过的信任此命令、甚至 YOLO 全授权都绕不过一次硬拒绝。另外 YOLO 授权是限时的默认 6 小时、硬顶 24 小时到期自动失效。第3层输入校验——把脏数据挡在处理器门口每个 Kiro Crew 自有的 MCP 工具调用都会先对照声明式FieldSpec ToolSchema校验validation.pyNFC Unicode 归一化并剥离隐藏控制字符、枚举白名单、标识符合法性正则、分级长度上限短 500 / 中 5000 / 长 50000 字符响应截断在 100000 字符防止无限工具输出成为 DoS 向量。第4层输出脱敏——先解码后筛查先脱敏后截断脱敏运行在每一个智能体输出到达人类或外部服务的边界上核心是 redaction.pyredact_credentials()识别明文与base64 编码的凭证族云密钥、私钥头、数据库连接串等会先解码再复查redact_exfiltration_urls()与域名无关地标记载荷本身——URL 里带凭证是无条件拦截长查询串、base64 大块是启发式信号StreamRedactor处理凭证被拆成两半流过流式边界这种单块匹配必挂的场景压住尾部可疑片段直到确认安全才放行。两条通用排序规则值得记住先解码再筛查筛完编码形式再写解码值等于白筛先脱敏再截断先截断可能把凭证切成两半谁都不匹配。第5层安全事件日志SEL——篡改可检测关键操作审计失败即拒绝SEL 是追加式 HMAC 链式的sel.py通过GET /api/sel/verify可验证链完整性。更狠的是审计或拒绝audit-or-deny策略沙箱委托、拒绝例外、内部敏感读取这三类决策写不进审计日志就拒绝执行。而反过来拒绝事件的审计是尽力而为——守卫已经拒绝了绝不允许日志写失败变成放行。企业治理Policy ∩ Profile最严者胜在六层之上还有一条正交轴线effective POLICY ∩ PROFILEtightest-wins最严者胜。Level 1 的 POLICY 启动时从信任根加载永远不与config.json合并且它在 Kiro Crew 自有的 PreToolUse 关卡执行——哪怕kiro-cli的智能体配置放行了某个工具企业策略依然可以拒绝。详细模型见 governance 说明。诚实的剩余风险官方承认的已知边界好的安全模型不回避短板。安全深度解析文档 明确列出了当前边界新手需要知道默认无网络出口管控沙箱藏住了凭证文件但被入侵的智能体仍可向任意主机发送非凭证数据可用治理network.egress范围限定主机命令匹配不是完整 shell 解析器能关已知规避家族但拦不住运行时拼装的 payloadbase64 blob、间接eval写保护不覆盖用户的 shell 启动文件~/.bashrc等仍是真实的持久化向量只能靠审批门与破坏性命令规则缓解。完整机制规格规则表、正则形态、逐函数算法都在 security 模块规格。新手快速上手3 步确认自己的安全姿态看姿态面板Dashboard → Settings → Security实时数据来自GET /api/security/posture由 security_posture.py 运行时推导不写死在文档里查审计链访问/api/sel/verify验证事件日志完整性/api/sel/events查看近期安全事件扫历史命令运行kirocrew security audit对历史命令做咨询级扫描对照当前关卡确认没有漏网的危险模式。小结把 Shell 权限交给 LLM 会不会出事会但 Kiro Crew 的答案是假设它一定会出然后用六层互不相关、各自以不同方式失效的防线把爆炸半径压到最小OS 沙箱关进程、路径关卡护凭证、命令关卡硬拒绝、Schema 挡脏输入、脱敏擦输出、SEL 留铁证——外加一条智能体自己永远改不了的企业天花板。对新手来说只需记住一句在 Kiro Crew 里信任永远排在拒绝之后。️【免费下载链接】KiroCrewA persistent workspace for development work that self-improves and continues beyond one session.项目地址: https://gitcode.com/gh_mirrors/ki/KiroCrew创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
