Emacs 25.3 发布 (修复 Enriched mode 的安全漏洞)

https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00211.html

This is an emergency release to fix a security vulnerability in Emacs.

Enriched Text mode has its support for decoding 'x-display' disabled.
This feature allows saving 'display' properties as part of text.
Emacs 'display' properties support evaluation of arbitrary Lisp forms
as part of instantiating the property, so decoding 'x-display' is
vulnerable to executing arbitrary malicious Lisp code included in the
text (e.g., sent as part of an email message).

This vulnerability was introduced in Emacs 19.29.  To work around that
in Emacs versions before 25.3, append the following to your ~/.emacs
init file:

  (eval-after-load "enriched"
    '(defun enriched-decode-display-prop (start end &optional param)
       (list start end)))

Gnus no longer supports "richtext" and "enriched" inline MIME objects.
This support was disabled to avoid evaluation of arbitrary Lisp code
contained in email messages and news articles.
1 个赞

只说是紧急修复,没有 changelog 也不知道改变了什么

说的很清楚了,就是修复了可以利用邮件让 MIME 执行任意代码的漏洞。


其实就是阉割了个功能。

其它没有改变?那我不用更新了,因为我也不用 emacs 收发邮件

就这一个patch吗,有点夸张,毕竟半年过去了

emacs 发邮件还没找到很方便的插件,每个插件都是要配一大堆东西,有没有杀手级的emacs插件啊。

又快半年了……速度真慢啊。

26遥遥无期ing……

已经升级了的话,用 C-h n (view-emacs-news) 查看 ChangeLog,还没的话,到源码目录下的 etc/NEWS 中查看,如

Emacs 25.X 除了 25.1 外,其它的版本一般都不会添加任何新的功能,只有比较重要的 Bug 修复。

不是的,26也快来了。

如果在现代化 Emacs 邮件工具 (Gnus, WanderLust, Mew, mu4e) 里面最简便的 mu4e 对你来说也太麻烦的话,那应该就没有适合你的了。

也许你可以试试 mutt。

Rmail 或者 MH Mail 这种 Unix 风格的应用估计现在的人都吃不消。RMS 每天近千邮件却能用 Rmail 处理,要说杀手级,我觉得每个 Emacs 邮件应用都是杀手级,都能通过扩展做很多事。

I spend most of my time editing in Emacs. I read and send mail with Emacs using M-x rmail and C-x m. I have no experience with any other email client programs. In principle I would be glad to know about other free email clients, but learning about them is not a priority for me and I don’t have time.


什么?RMS 用的 Emacs 配置在哪里可以看到?

他用的就是 Emacs 的默认设定……

不过对我来说很重要,mu4e用户

不好意思,这个安全修复针对的是 Gnus,和 mu4e 用户没关系。

哦,我以为用到了MIME的都受影响呢

说的是 (emacs) Enriched Mode 的漏洞,所以你用 Emacs 打开这个格式的文件,就有可能自动执行一段代码,比如说有人知道你是 Emacs 用户,给你发了一个文件,内容为:

Content-Type: text/enriched
Text-Width: 70

<x-display><param>(when (shell-command "touch /tmp/hello.txt") nil)</param>Hello, world!</x-display>

想象如果把 touch /tmp/hello.txt 换成 rm -rf ~,那就非常危险了,所以可以理解为什么要立即发布一个新版本了。对于 Emacs 25.2 以及之前版本,目前的 ChangeLog 还建议大家禁用掉 Enriched Mode:

(provide 'enriched)
(defun enriched-mode (&optional arg))
(defun enriched-decode (from to))
2 个赞

Enriched Mode其实挺厉害,可以让Emacs实现所见即所得编辑器的功能

macOS 上自带的 Emacs 22.1 也在 19.29 ~ 25.2 之列,也受此影响,这个漏洞可能会非常危险。


根据 ChangeLog,这个漏洞是 1999 年(也就是 18 年前)引入的。

26 可能还早,有些问题大半年了都没有解决。

在自己的配置里defun覆盖可以去掉漏洞,那么第一句provide是干什么呢?

那是 ChangeLog 中介绍的方法,通过提供一个空的 enriched Feature,它会直接完全禁用掉 Enriched Mode。

对于旧版本的 Emacs,目前这个漏洞的处理方法似乎还在讨论中,暂时我是在 init.el 中加入:

(eval-after-load 'enriched
  '(and (fboundp 'enriched-decode-display-prop)
        (defun enriched-decode-display-prop (start end &optional param)
          (list start end))))

但是显然 emacs -Q 还是会受到影响。

1 个赞