见 calif的blog。vim漏洞详情见 https://github.com/vim/vim/security/advisories/GHSA-2gmj-rpqf-pxvh,Emacs的见https://github.com/califio/publications/blob/main/MADBugs/vim-vs-emacs-vs-claude/Emacs.md
vim的已经修了,但Emacs的这个很难说是Emacs本身的bug。 git config中的core.fsmonitor选项允许git执行任意的代码,只要git status就会触发,而emacs的vc-refresh-state(会执行git status等命令)注册在find-file-hook中……
小心来路不明的.git文件夹
7 个赞
看完了,顺便总结一下:
主要的问题是 Git 本身吧,执行命令都会读取 .git/config, 而如果里面有 core.fsmonitor 配置,则会执行任意程序。
解决方法是覆盖 core.fsmonitor,设置为 false。
不管用不用 Emacs,如果存在这样的恶意配置,在未察觉的情况下执行 Git 命令,都会中招。
除了 core.fsmonitor,core.sshCommand、core.editor、core.pager 等也有类似问题。
在拉取仓库之后,养成习惯先检查一下 .git/config,就能避免这个问题(不过是人就有疏忽的时候)。
Emacs 执行 find-file 就会触发 vc-refresh-state 进而触发 git status,检查 .git/config 的时候还不能用 Emacs 的 find-file 来打开检查了,那就用 cat 吧 = =
5 个赞
我也认为这是git本身的机制漏洞,第三方根本改不完(与git相关的包可能都需要修改,改完了调用的第三方脚本、命令也要改),除非本地环境全局彻底禁用该功能。
从 melpa/elpa 下载的天天用的包怕是都没几人自己一行行审查过,还怕有人用陌生 git repo 搞你?
7 个赞
1co
5
牛牛牛,吓得我爬起来试了试,全中!
幸亏是今天看到,明天看到就当玩笑了
mazrd
6
surprise , cc is now open source
1 个赞
RnE
7
说到「安全」, Emacs 最近加了 package-review-policy,可以在 package.el 更新包的时候审查 diff,不也没什么人在意
就没必要对这种「0day」一惊一乍了(
2 个赞
想了想对于 Emacs 还挺麻烦的,find-file 是最常用的一个命令,如果正好打开一个目录,里面有 .git 且包含恶意的配置,就不知不觉中招了。
能在 Emacs 层面检测一下、防御一下也是好的。
twleo
9
连 git 的漏洞都算不上
本来就不该 direct copy git directory.
fresh clone 还能 trigger 才算
不然我写个 git hook 不就好了 然后 copy 到 别的 machine 这也算 RCE?
漏洞作者连 最基本的 threat model 都没想清楚
6 个赞
不执行git命令也会中招?不会吧?
find-file只是单纯打开文件,除非使用了git命令或者用了magit/vc之类的package。如果非要用他人提供的危险的hook,如何防范?我认为这个漏洞跟Emacs没有关系。
啊啊对哦,.git/本来就不会被git传来传去的
被绕进去了
1 个赞
如 @twleo 说的,这个漏洞的前提条件是,.git/config 里存在恶意的 core.fsmonitor 配置。
core.fsmonitor 属于本地配置,不会 push 到上游,从上游 clone 下来也不会自带 core.fsmonitor 。
除非别人将 .git 保留下来,传递给你,才会包含有恶意的 .git/config。我想到的一种情况是,有的公司面试的时候会给你丢个 zip 包让你实现一些什么,这里头就有机可乘吧。
因为 Emacs 内置的 vc-hooks.el 往 find-file-hook 里注册了 vc-refresh-state,所以执行 find-file 就会执行 Git 命令(git status)。所以如果用 find-file 打开包含恶意的 .git/ 文件夹的任何文件,就会触发问题吧。
1 个赞
靠人看是防不住的,不然他们家的map文件怎么泄露的 
1 个赞
watt
14
用定制的服务端怎么样?不知道客户端有没有抵抗力。
或者用嵌套的目录结构:
Project/
.git/
main/
.git/
- config
README.md
假定你已经被恶意控制了 然后说能恶意控制你 这不搞笑嘛 这东西有点太llm了。
当你的电脑安装了恶意控制软件且在启动当中,你只要一启动电脑就会被控制 那你的电脑或者你的行为 就是0day漏洞嘛?不是的哦