AST-based command decomposition:方案与安全边界(discussion) #10
Replies: 7 comments 2 replies
|
这个方向可行。我建议首版把下面几类情况设为显式边界。
共享测试向量里可以增加一个 |
|
或许可以考虑实现一个带审计能力的 bash |
|
个人认为:
|
|
AST方案建议只作为一种补充,用于确实能够通过部分证明整体安全性的场合,对于比较复杂的情况,感觉还是要利用auto-review让AI来审核 |
|
几位提的边界清单我全盘接受,尤其是「解析失败/空 argv/动态 argv 一律不回退 allow」和「动态构造字符串不能继承外层 allow」这两条——AST 分解的价值必须建立在 fail-closed 之上。首版实现按 @sjh9714 的清单收口: |
|
抱歉,我上一条评论是通过工具发布时编码出错,评论区显示的乱码并非本意。原文应为:
感谢指正。 |
|
Announcement: this design is now officially scheduled for implementation on the dsh-permission-rules roadmap. The binding constraints are exactly the ones gathered in this thread: fail-closed first (parse failure / empty argv / dynamic argv never fall back to allow), audited wrapper allowlists, and Thanks everyone for the boundary cases — the thread stays open for more. 中文摘要:本方案已正式排期进入路线图。硬约束即本线程共识——fail-closed 优先、包装器审计白名单、xargs/parallel 默认 ask/deny;门控 PoC + dry-run + phase 测试向量先行,审计证据齐备后小版本发布。感谢各位的边界用例,讨论继续开放。 |
Uh oh!
There was an error while loading. Please reload this page.
目标:把一条 shell 行解析为命令树(管道 / 子 shell / 重定向),按「叶子命令 + 完整 argv」逐条过 allow/deny/ask 规则,让 permission-rules 从「整行匹配」升级到「结构化匹配」。
与现有 params 通配的关系:AST 分解是 params 层之上的第二判定面——先 params 后 AST,双面都过才放行;params 命中的规则仍以行级短路优先。
安全边界(本方案的核心约束):
范围外(首版不做):别名展开、shell 求值仿真、跨行续行。
征求 @sjh9714 与 @weipeng1999 的意见,欢迎补充边界用例(如
xargs/sudo包裹、$(...)嵌套深度上限、多语句;分段粒度)。All reactions