Replies: 4 comments 2 replies
|
还有一个问题我需要确认下,当前的沙箱是否像AI描述的这样:
因此:含 |
|
你的疑问里有一个前提需要先纠正:这个沙箱不是按"当前目录"授权的,所以"因为命令写进脚本执行、沙箱以为还在当前目录"这条推测不成立。它是按目录树上的 ACL 能力授权的,而"授权范围内允许删除"是设计如此。 注意
还有一条对你"以为插件全丢了"很关键的事实:删除一个符号链接/联接点,删掉的是链接本身(reparse point),不是它的目标。你的 vscode 插件实体在 D 盘,删链接不会动到它们 —— 这与你自己抽查的结论(只有两个链接消失、AI 说是命令写错)一致。 所以这条我建议按下面这样改写才算"可判定"的报告(现在这版缺的正是这个):
有这三条就能直接判定"授权范围内正常删除"还是"越界"。我不猜是哪一种。 边界:读的是 |
|
One version fact that narrows the question you are waiting on, from the same-reporter thread next door (#7517, also
So on the build reported here, your answer "if the parent is inside the granted tree, the delete is ordinary authorized behaviour" is right — but it does not cover the second case, and that case does not need a workspace-root answer at all: a delete outside the granted roots was authorized by the caller's ambient rights on the object's own parent, which no restricting SID had to co-sign and nothing denied. That is what #7517 measures through a junction it creates itself: writes refused (they need the restricting-SID pass-2 co-sign, absent outside), deletes allowed (they needed only the ambient parent right). What I could not settle from source is which parent the kernel evaluates Practical suggestion for this thread: a retest on |
|
The gap this thread reports now has a mountable answer:
The rule it enforces is the one your incident is an instance of: a path whose spelling sits inside the granted write area while its resolution leaves it. It canonicalizes the declared path operands of a tool call and compares them against the same derivation the filesystem fence uses, then refuses the call before dispatch with the three facts a fence sentence omits: That middle line is computed by walking component by component the way the kernel does, which is what makes The honest boundary for your case, since your report is a What it would have changed is the model's next move. The refusal names the link and both readings, so the call cannot be re-tried under a different spelling with the same silent outcome — which is what turns "the sandbox refused me" into "I now know this directory is a link out of the workspace". Two side notes that may bear on your incident directly:
37 tests (real Cordis context, real |
Uh oh!
There was an error while loading. Please reload this page.
现象
在
workspace-write模式下,一个受限的pwsh命令成功删除了两个位于工作区之外的 windows 符号链接环境
0.1.5-rc.2@deepseek-ai/dsh-sandbox-windows-aclworkspace-write(审批策略ask)过程
疑惑点
正常来说,修改外部内容的话,沙箱是会做拦截并请求用户确认的,但是当时并没有做任何拦截,是因为dsh可能把操作的命令写入脚本后执行脚本,沙箱默认是操作当前目录所以放过去了吗(之后排查问题、重建链接涉及到修改外部文件,都有拦截并请求确认)
dsh 生成的分析结论
dsh-sandbox-reparse-point-escape.md
dsh-sandbox-reparse-point-escape.zh-CN.md
sandbox-escape-evidence-appendix.md
All reactions