Skip to content

[fork-patch] Windows cache-private/DACL 硬化检查增加可跳过开关(CBM_SKIP_DACL_HARDENING) #2

Closed

Description

@daidaiJ

背景

Windows 上 cache 目录的 cache-private 检查不可配置,导致 cache 目录链上任何"宽松"AACL 都会让 CLI/MCP 直接拒启:

codebase-memory-mcp: secure CLI coordination could not be created (cache-private):
DACL entry 0 grants mutation rights 0x00000112 to untrusted identity (other S-1-5-21-...)

上游设计争议见 DeusData#1624;社区已有开关补丁 PR DeusData#1649(CBM_SKIP_DACL_HARDENING)。

本机现状(临时绕过)

  • cache 重定向到 D:\data\codebase-memory-mcp\cache(CBM_CACHE_DIR)
  • D:\data 已手动移除 Authenticated Users 写权限作为绕过——侵入性强,且机器上其他软件共享该目录时会被误伤

fork 补丁计划(与 #1 一起改)

  1. 基于 PR feat(config): make Windows cache-dir DACL hardening configurable (env var + CLI config key) DeusData/codebase-memory-mcp#1649 diff 在 patch 分支应用,允许 CBM_SKIP_DACL_HARDENING=1 跳过硬化检查(fail-open,责任自负)
  2. 恢复默认 ACL:icacls D:\data /reset
  3. 验证矩阵:CBM_CACHE_DIR 指向默认 ~/.cache(现会拒启)与 D 盘自定义路径 × 开关 0/1

备注

  • 官方 _build.yml 过重,编译走自写精简 GitHub Actions workflow(windows-amd64),产物替换 ~/tools/codebase-memory-mcp/
  • 项目是 C(tree-sitter + jemalloc),非 Go

Activity

  1. daidaiJ commented on Sep 5, 2026

    @daidaiJ
    OwnerAuthor

    已解决,实现形态与提案有出入,说明如下(commit 9a49749,随 v0.8.1-fork.1 发布)。

    采纳的形态是「默认反转」而非「开关跳过」:环境变量定名 CBM_DACL_HARDENING(非提案的 CBM_SKIP_DACL_HARDENING)——默认跳过 cache 目录的不可信 ACE 遍历,CBM_DACL_HARDENING=1 才开回严格检查。理由:单用户本地工具不该被祖先目录(共享工具目录继承 Authenticated Users ACE)挡在门外,跳过应是默认态;多用户/终端服务器主机才需要显式开回。

    • 属主校验(owner validation)两种模式都保留,只放宽不可信 ACE 遍历
    • env-only 是刻意设计:config store 就在 cache 目录里,配置键无法影响创建它的首次运行
    • 提案中的 icacls /reset 临时绕过与 CBM_CACHE_DIR 搬家均已不再需要,D:\data 的 ACL 可恢复默认
    • 验证矩阵与文档见 docs/FORK_PATCHES.md;README 环境变量速查表已收录该键

    二进制见 v0.8.1-fork.1 release。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions