Discussion:
Security: Gnus & GNU Emacs 25.2 enriched text remote code execution
(zu alt für eine Antwort)
Reiner Steib
2017-09-11 21:39:37 UTC
Permalink
Hi,

in Emacs wurde ein Bug in der Verarbeitung bestimmten MIME-Daten
(text/enriched, RFC 1896) entdeckt, der einem Angreifer die Ausführung
beliebigen Codes unter dem jeweiligen Benutzer ermöglicht.

Da Emacs-basierte Mail-Clients (z.B. Gnus) Mails mit "Content-Type:
text/enriched" mit diesem Code verabreiten, ist ein Angriff über eine
präparierte Mail (oder News-Artikel) möglich.

Der Bug betrifft Versionen von GNU Emacs bis einschließlich 25.2.
Eine neue Emacs-Version, in der dieser Bug behoben ist, wird in Kürze
veröffentlicht (voraussichtlich als Emacs 25.3).

Allen Anwendern, die Emacs <= 25.2 einsetzen, empfehle ich dringend,
den folgenden Code in die persönliche und/oder site-spezische
Initialisierungsdatei (~/.emacs, ~/emacs.d/init.el, site-start.el)
einzufügen, um eine Ausnutzung der Schwachstelle zu verhindern:

;; Mitigate Bug#28350 (security) in Emacs 25.2 and earlier.
(eval-after-load "enriched"
'(defun enriched-decode-display-prop (start end &optional param)
(list start end)))

Zusätzlich sollten Start-Optionen wie '-Q', die das Laden von
Initialisierungsdateien unterdrücken, vermieden werden (wenn man
nicht-vertrauenswürdige Dateien bzw. Mails bearbeitet.

Viele Grüße
Reiner

[X-Post, bitte nach Bedarf Follow-Up auf eine Gruppe beschränken.]

Announcement in English, siehe
<http://www.openwall.com/lists/oss-security/2017/09/11/1>
(Nach der Veröffentlichung hat sich herausgestellt, dass erst Emacs-
Versionen ab 21.1 betroffen sind.):

--8<---------------cut here---------------start------------->8---
Date: Sun, 10 Sep 2017 23:56:20 -0700
From: Paul Eggert <***@...ucla.edu>
To: oss-***@...ts.openwall.com
Subject: GNU Emacs 25.2 enriched text remote code execution

GNU Emacs is an extensible, customizable, free/libre text editor and
software environment. When Emacs renders MIME text/enriched data
(Internet RFC 1896), it is vulnerable to arbitrary code
execution. Since Emacs-based mail clients decode "Content-Type:
text/enriched", this code is exploitable remotely. This bug affects
GNU Emacs versions 19.29 through 25.2.

Although we know no efforts to exploit this in the wild, exploitation is easy.

== Details ==

https://bugs.gnu.org/28350

== Patch ==

https://git.savannah.gnu.org/cgit/emacs.git/commit/?h=emacs-25&id=9ad0fcc54442a9a01d41be19880250783426db70

== Mitigation ==

To work around the bug in unfixed versions of Emacs, put the following code in
your personal or site-wide Emacs init file (~/.emacs, ~/emacs.d/init.el,
site-start.el):

;; Mitigate Bug#28350 (security) in Emacs 25.2 and earlier.
(eval-after-load "enriched"
'(defun enriched-decode-display-prop (start end &optional param)
(list start end)))

and avoid 'emacs -Q' and similar options that bypass normal initialization.

== Timeline ==

2017-09-04. Bug reported to the Emacs bug tracker by Charles A. Roelli.

2017-09-07. POC for remote code execution sent to the maintainers of Emacs and
Gnus (Reiner Steib <***@....de>, private mail).

2017-09-08. Patch (by Lars Ingebrigtsen <***@...s.org>) to disable the
problematic code and mitigation (private mail).

2017-09-09. Patch committed in main development repository.
--8<---------------cut here---------------end--------------->8---
Wolfgang Bauer
2017-09-12 06:21:30 UTC
Permalink
Servus.
Post by Reiner Steib
Hi,
Der Bug betrifft Versionen von GNU Emacs bis einschließlich 25.2.
Eine neue Emacs-Version, in der dieser Bug behoben ist, wird in Kürze
veröffentlicht (voraussichtlich als Emacs 25.3).
Allen Anwendern, die Emacs <= 25.2 einsetzen, empfehle ich dringend,
den folgenden Code in die persönliche und/oder site-spezische
Initialisierungsdatei (~/.emacs, ~/emacs.d/init.el, site-start.el)
;; Mitigate Bug#28350 (security) in Emacs 25.2 and earlier.
(eval-after-load "enriched"
'(defun enriched-decode-display-prop (start end &optional param)
(list start end)))
Danke für den Hinweis. Ich habe es in die ~/.emacs eingefügt. Es
betrifft meine Version aus den Paketquellen /noch/ nicht aber ...


Newsgroups: <news:de.comm.software.gnus>, <news:de.comp.editoren>
F'up2: <news:de.comm.software.gnus>

Wolfgang
--
Früher war ich unentschlossen,
heute bin ich mir da nicht mehr so sicher.
Jens K. Loewe
2017-09-13 21:32:37 UTC
Permalink
FYI: Emacs 25.3 behob das Problem zwei Tage nach
Veröffentlichung. Vorbildlich!
--
Kann Spuren von Nüssen und Umlauten enthalten.
Andreas Kohlbach
2017-09-15 20:11:57 UTC
Permalink
Post by Jens K. Loewe
FYI: Emacs 25.3 behob das Problem zwei Tage nach
Veröffentlichung. Vorbildlich!
Jetzt müssten Distributionen es noch zeitnah nachreichen. Debian Testing
hatte sie heute Morgen noch nicht.
--
Andreas
You know you are a redneck if
you've ever bought a used cap.
Ulf Volmer
2017-09-15 21:59:19 UTC
Permalink
Post by Andreas Kohlbach
Post by Jens K. Loewe
FYI: Emacs 25.3 behob das Problem zwei Tage nach
Veröffentlichung. Vorbildlich!
Jetzt müssten Distributionen es noch zeitnah nachreichen. Debian Testing
hatte sie heute Morgen noch nicht.
Debian stable hat gerade geliefert.

Viele Grüße
Ulf
Andreas Kohlbach
2017-09-16 19:38:29 UTC
Permalink
Post by Ulf Volmer
Post by Andreas Kohlbach
Post by Jens K. Loewe
FYI: Emacs 25.3 behob das Problem zwei Tage nach
Veröffentlichung. Vorbildlich!
Jetzt müssten Distributionen es noch zeitnah nachreichen. Debian Testing
hatte sie heute Morgen noch nicht.
Debian stable hat gerade geliefert.
Testing heute Morgen immer noch nicht. Vielleicht sollte ich auf stable
wechseln, wenn ich aktuellere Software will. ;-)
--
Andreas
You know you are a redneck if
you can amuse yourself for more than an hour with a fly swatter.
Thomas Hochstein
2017-09-16 21:29:22 UTC
Permalink
Post by Andreas Kohlbach
Testing heute Morgen immer noch nicht.
Da wird es auch prinzipbedingt keine - zeitnahen - Sicherheitsupdates
geben.

Die Version mit dem Fix wurde am 12.09.2017 in unstable hochgeladen
und wäre (aufgrund von Urgency: high) normalerweise binnen 2 Tagen in
testing gelandet. Es hängt aber:
<https://qa.debian.org/excuses.php?package=emacs25>

Den aktuellen Status des Pakets kannst Du jederzeit hier einsehen:
<https://tracker.debian.org/pkg/emacs25>

-thh
Andreas Kohlbach
2017-09-17 20:32:13 UTC
Permalink
Post by Thomas Hochstein
Post by Andreas Kohlbach
Testing heute Morgen immer noch nicht.
Da wird es auch prinzipbedingt keine - zeitnahen - Sicherheitsupdates
geben.
Die Version mit dem Fix wurde am 12.09.2017 in unstable hochgeladen
und wäre (aufgrund von Urgency: high) normalerweise binnen 2 Tagen in
<https://qa.debian.org/excuses.php?package=emacs25>
<https://tracker.debian.org/pkg/emacs25>
Danke.

Ich sollte vielleicht, wie eben in der misc Gruppe erwähnt, auf unstable
umsteigen...
--
Andreas
You know you are a redneck if
you've ever lost a loved one to kudzu.
frank paulsen
2017-09-16 06:56:21 UTC
Permalink
Post by Andreas Kohlbach
Post by Jens K. Loewe
FYI: Emacs 25.3 behob das Problem zwei Tage nach
Veröffentlichung. Vorbildlich!
Jetzt müssten Distributionen es noch zeitnah nachreichen. Debian Testing
hatte sie heute Morgen noch nicht.
Debian Testing ist auch *keine* gute idee, wenn man zeitnahe fixes haben
will.

der fehler ist behoben in Debian Stable:
https://lists.debian.org/debian-security-announce/2017/msg00237.html
--
frobnicate foo
Andreas Kohlbach
2017-09-16 19:39:16 UTC
Permalink
Post by frank paulsen
Post by Andreas Kohlbach
Post by Jens K. Loewe
FYI: Emacs 25.3 behob das Problem zwei Tage nach
Veröffentlichung. Vorbildlich!
Jetzt müssten Distributionen es noch zeitnah nachreichen. Debian Testing
hatte sie heute Morgen noch nicht.
Debian Testing ist auch *keine* gute idee, wenn man zeitnahe fixes haben
will.
Ist testing nicht "neueste Software" inklusive" Bugfixes?
--
Andreas
You know you are a redneck if
you can amuse yourself for more than an hour with a fly swatter.
Peter J. Holzer
2017-09-17 08:50:50 UTC
Permalink
["Followup-To:" header set to de.comp.os.unix.linux.misc]
Post by Andreas Kohlbach
Post by frank paulsen
Post by Andreas Kohlbach
Post by Jens K. Loewe
FYI: Emacs 25.3 behob das Problem zwei Tage nach
Veröffentlichung. Vorbildlich!
Jetzt müssten Distributionen es noch zeitnah nachreichen. Debian Testing
hatte sie heute Morgen noch nicht.
Debian Testing ist auch *keine* gute idee, wenn man zeitnahe fixes haben
will.
Ist testing nicht "neueste Software" inklusive" Bugfixes?
Testing dient dazu, die Updates, die von den regulären Maintainern
eingepflegt werden, zu testen. Dazu muss der Maintainer erst mal eine
Version uploaden, dann muss die auf allen Systemen gebaut werden, es
gibt eine gewisse Haltezeit, um eventuelle Bugs noch in unstable
auszumerzen, bevor sie an alle Tester verteilt werden ... das dauert
(durchaus mit Absicht) ein paar Tage. Und kritische Bugs kann es in
Testing per Definition nicht geben, weil es nur zum Testen da ist und
nicht für den Produktionsbetrieb. Also gibt es da keine Eile.

Das Security-Team arbeitet parallel dazu: Wenn die eine Sicherheitslücke
fixen, können sie direkt in die stable-Version uploaden und den üblichen
Test-Zyklus umgehen - weil die Behebung von Sicherheitslücken in
Produktivsystemen meistens dringend ist.

hp
--
_ | Peter J. Holzer | Fluch der elektronischen Textverarbeitung:
|_|_) | | Man feilt solange an seinen Text um, bis
| | | ***@hjp.at | die Satzbestandteile des Satzes nicht mehr
__/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel
Florian Weimer
2017-09-14 19:56:31 UTC
Permalink
Post by Reiner Steib
Allen Anwendern, die Emacs <= 25.2 einsetzen, empfehle ich dringend,
den folgenden Code in die persönliche und/oder site-spezische
Initialisierungsdatei (~/.emacs, ~/emacs.d/init.el, site-start.el)
;; Mitigate Bug#28350 (security) in Emacs 25.2 and earlier.
(eval-after-load "enriched"
'(defun enriched-decode-display-prop (start end &optional param)
(list start end)))
Das erscheint mir wirkungslos, wenn irgend etwas enriched mittels

(require 'enriched)

lädt.
Reiner Steib
2017-09-20 20:24:50 UTC
Permalink
Post by Florian Weimer
Post by Reiner Steib
Allen Anwendern, die Emacs <= 25.2 einsetzen, empfehle ich dringend,
den folgenden Code in die persönliche und/oder site-spezische
Initialisierungsdatei (~/.emacs, ~/emacs.d/init.el, site-start.el)
;; Mitigate Bug#28350 (security) in Emacs 25.2 and earlier.
(eval-after-load "enriched"
'(defun enriched-decode-display-prop (start end &optional param)
(list start end)))
Das erscheint mir wirkungslos, wenn irgend etwas enriched mittels
(require 'enriched)
lädt.
Dein Einwand (auf oss-security) wurde von Paul Eggert in emacs-devel
eingebracht, aber niemand konnte das von dir angedeutete Problem
nachvollziehen.

Ich auch nicht ...

# Ubuntu 14.04.5 LTS

$ emacs24 -Q # ohne Mitigation

| *** Welcome to IELM *** Type (describe-mode) for help.
| ELISP> (featurep 'enriched)
| nil
| ELISP> (require 'enriched)
| enriched
| ELISP> (enriched-decode-display-prop 0 3 'foo)
| (0 3 display nil)

Buffer *Messages*:
| Warning: invalid <x-display> parameter foo

$ emacs24 -Q # zuerst Mitigation, dann require

| *** Welcome to IELM *** Type (describe-mode) for help.
| ELISP> (eval-after-load "enriched"
| '(defun enriched-decode-display-prop (start end &optional param)
| (warn "RS: enriched bug workaround")
| (list start end)))
| nil
| ELISP> (featurep 'enriched)
| nil
| ELISP> (require 'enriched)
| enriched
| ELISP> (enriched-decode-display-prop 0 3 'foo)
| (0 3)

Buffer *Warnings*:
| Warning (emacs): RS: enriched bug workaround

$ emacs24 -Q # zuerst require, dann Mitigation

| *** Welcome to IELM *** Type (describe-mode) for help.
| ELISP> (featurep 'enriched)
| nil
| ELISP> (require 'enriched)
| enriched
| ELISP> (eval-after-load "enriched"
| '(defun enriched-decode-display-prop (start end &optional param)
| (warn "RS: enriched bug workaround")
| (list start end)))
| enriched-decode-display-prop
| ELISP> (enriched-decode-display-prop 0 3 'bar)
| (0 3)

Buffer *Warnings*:
| Warning (emacs): RS: enriched bug workaround

Viele Grüße
Reiner

Loading...