CVE-2024-3094: Backdoor in Linux Tool XZ

OP (Firma: RUB) #7634790
Lesenswert?

TLDR

1
The cause of the vulnerability is actually malicious code present in 
2
versions 5.6.0 (released in late February) and 5.6.1 (released on March 9) 
3
of the xz libraries
#7634980
Lesenswert?

Wenn so etwas 3 Jahre lang vorbereitet wird, ausgerechnet bei XZ, das z.B. für die Verteilung von Datenträger-Images verwendet wird (Raspberry OS !!!), dann taucht die Frage auf: was steckt dahinter?

EDIT Ich habs: LZMA wäre auch betroffen, sodass teilweise OpenSSH indirekt (über systemd) betroffen wäre

OP (Firma: RUB) #7635439
Lesenswert?

Stephan S. schrieb:

was steckt dahinter?

Riecht nach einem staatlichen Aktuer. Und ssh belauschen ist immer interessant.

Stephan S. schrieb:

LZMA wäre auch betroffen, sodass teilweise OpenSSH indirekt (über systemd) betroffen wäre

systemd ist dabei relativ egal und nicht das Problem, auch wenn das einige Leute gerne so sehen möchten. xz wird von genug anderen sachen benutzt.

1
$ paru -Rns xz
2
checking dependencies...
3
error: failed to prepare transaction (could not satisfy dependencies)
4
:: removing xz breaks dependency 'xz' required by arm-none-eabi-gdb
5
:: removing xz breaks dependency 'xz' required by base
6
:: removing xz breaks dependency 'xz' required by bind
7
:: removing xz breaks dependency 'xz' required by botan
8
:: removing xz breaks dependency 'xz' required by botan2
9
:: removing xz breaks dependency 'xz' required by ffmpeg
10
:: removing xz breaks dependency 'xz' required by ffmpeg4.4
11
:: removing xz breaks dependency 'xz' required by file
12
:: removing xz breaks dependency 'xz' required by gdb
13
:: removing xz breaks dependency 'xz' required by gimp
14
:: removing xz breaks dependency 'xz' required by grub
15
:: removing xz breaks dependency 'xz' required by imagemagick
16
:: removing xz breaks dependency 'xz' required by imlib2
17
:: removing xz breaks dependency 'xz' required by karchive
18
:: removing xz breaks dependency 'xz' required by kmod
19
:: removing xz breaks dependency 'xz' required by lib32-xz
20
:: removing xz breaks dependency 'xz' required by libarchive
21
:: removing xz breaks dependency 'xz' required by libelf
22
:: removing xz breaks dependency 'liblzma.so=5-64' required by libelf
23
:: removing xz breaks dependency 'xz' required by libtiff
24
:: removing xz breaks dependency 'xz' required by libunwind
25
:: removing xz breaks dependency 'xz' required by libxml2
26
:: removing xz breaks dependency 'xz' required by libxmlb
27
:: removing xz breaks dependency 'xz' required by libxslt
28
:: removing xz breaks dependency 'xz' required by lldb
29
:: removing xz breaks dependency 'xz' required by megaman-rocknroll
30
:: removing xz breaks dependency 'xz' required by minizip-ng
31
:: removing xz breaks dependency 'xz' required by perf
32
:: removing xz breaks dependency 'xz' required by raptor
33
:: removing xz breaks dependency 'xz' required by rustup
34
:: removing xz breaks dependency 'xz' required by systemd
35
:: removing xz breaks dependency 'xz' required by systemd-libs
36
:: removing xz breaks dependency 'xz' required by wxwidgets-common
37
:: removing xz breaks dependency 'xz' required by zstd
Moderator Persönliche Seite #7635443
Lesenswert?

Kaj G. schrieb:

systemd ist dabei relativ egal und nicht das Problem,

Offenbar schon, wenn man davon ausgeht, dass es das Ziel ist, in sshd einzubrechen (um auf diese Weise ein Einfallstor zu bekommen). Das wäre rein über lzma nicht ohne systemd's Mitwirkung gegangen, da sshd eigentlich nichts mit lzma zu tun hat.

Nach allem, was bisher analysiert worden ist, ist /usr/sbin/sshd explizit darin erwähnt, in allen anderen Fällen macht die Backdoor vermutlich gar nichts. gdb oder rustup und dergleichen sind halt für einen Remote-Angriff eher uninteressant …

OP (Firma: RUB) #7635876
Lesenswert?

xz-Attacke: Hintertür enträtselt, weitere Details zu betroffenen Distros https://www.heise.de/news/xz-Attacke-Hintertuer-entraetselt-weitere-Details-zu-betroffenen-Distros-9671588.html

"I'm watching some folks reverse engineer the xz backdoor, sharing some preliminary analysis with permission." https://bsky.app/profile/did:plc:x2nsupeeo52oznrmplwapppl/post/3kowjkx2njy2b

#7635912
Lesenswert?

Stephan S. schrieb:

Ich habs: LZMA wäre auch betroffen, sodass teilweise OpenSSH indirekt (über systemd) betroffen wäre

Indirekt, weil sshd mit libsystemd gelinkt wird, was nur nötig ist, weil systemd sonst nicht richtig funktioniert. So ein sshd ist selbst von liblzma abhängig und deshalb angreifbar. Dafür muss systemd nicht einmal installiert sein.

Nebenbei: auch der kernel benutzt xz.

#7635972
Lesenswert?

Jörg W. schrieb:

Bauform B. schrieb:

So ein sshd ist selbst von liblzma abhängig und deshalb angreifbar.

Nö, bei mir nicht.

Das /Paket/ braucht die Abhängigkeit wohl nicht, weil dpkg von liblzma5 abhängt und dpkg ist priority: required. Aber:

1
# lsof -c sshd | grep lzma
2
(...) /usr/lib/x86_64-linux-gnu/liblzma.so.5.4.1

Mario M. schrieb:

Kaj G. schrieb:

Zum Glück relativ schnell aufgefallen.

Debian stable rulez! 😂

Meinten Sie

1
Reverting the backdoored version to a previous version is not
2
sufficient to know that Jia Tan has not hidden other backdoors
3
in it. Version 5.4.5 still contains the majority of those commits.
4

5
I'd suggest reverting to 5.3.1.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1068024

Moderator Persönliche Seite #7636034
Lesenswert?

Bauform B. schrieb:

Das /Paket/ braucht die Abhängigkeit wohl nicht, weil dpkg von liblzma5 abhängt und dpkg ist priority: required.

Mag sein. Ich habe kein dpkg. ;-)

Allerdings würde deine Annahme auch voraussetzen, dass der Schadcode sich selbst über das reine Dekomprimieren in den sshd einnisten können. Danach sieht es nach jetzigen Erkenntnissen ja überhaupt nicht aus, sondern obwohl er gern sshd angreifen möchte (verständlich), benutzt er den Umweg, um über systemd und dessen Abhängigkeiten aufgerufen zu werden.

#7636042
Lesenswert?

Frank K. schrieb:

Zum Glück relativ schnell aufgefallen.

Aber wie steht es um jene Fälle, in denen es nicht aufgefallen ist?

Opensuse empfiehlt alle Systeme die betroffen sein könnten neu zu installieren: https://news.opensuse.org/2024/03/29/xz-backdoor/

Ich dachte oben eher an andere Backdoors in wichtigen Produkten, die niemandem auffielen, und die seit Jahren unerkannt in den Systemen stecken.

Mario M. schrieb:

"Right now no Debian stable versions are known to be affected."

Das ist eine entscheidende Aussage. Hoffentlich korrekt. Ähnliches fand ich zu Red Hat bzgl RHEL, und Ubuntu.

#7636112
Lesenswert?

Bezüglich systemd, vor 8 Jahren hab ich das hier geschrieben:
https://github.com/Daniel-Abrecht/fuck_systemd

Too many different things have been merged into systemd, too many things depend on it. Take libsystemd0 for example, the same library contains, among other things, functions to notify systemd about service state changes (sd_notify), and functions to log messages using journalctl (sd_journal_send). Those are some completely unrelated things which belong into different libraries, so they can be replaced easily.

TLDR: Unterschiedliche APIs, wie sd_notify, sd_journal_*, gehören in unterschiedliche Libraries, nicht alle in libsystemd0.

Um sd_notify zu implementieren, braucht man kein liblzma, man öffnet nur einen Socket und sendet was da hin. Wäre das eine eigene Library gewesen, wäre sie daher sicher nie von liblzma abhängig gewesen, vermutlich sogar von gar keiner weiteren Library.

Hier also mal wieder, systemd hat ein eigentlich gutes User Interface, gute cli Tools. Aber die Technische Umsetzung dahinter, die Aufteilung und Abhängigkeiten zwischen den Komponenten, sind einfach weiterhin falsch. Mir passt das nicht, weil die dann schwerer ersetzbar sind, und jenachdem nicht ohne Systemd laufen. Aber hier hatte es nun sogar Sicherheitsrelevante Auswirkungen!

Ich wünschte, die Entwickler hätten mal eine Erleuchtung, und würden ein kräftiges Refactoring durchführen. Aber daraus wird wohl nichts werden. Stattdessen laden sie die libs jetzt bei erster Verwendung mit dlopen...

#7636113
Lesenswert?

Bauform B. schrieb:

Das Paket braucht die Abhängigkeit wohl nicht, weil dpkg von liblzma5 abhängt und dpkg ist priority: required.

Ich habe bei mir auch nochmal nachgesehen, in devuan, mit ldd. Das libsystemd0 von libelogind-compat (der default dort) hängt nicht davon ab. Das libsystemd0 von systemd schon.

Auch lsof zeigt hier kein liblzma:

1
root@dragonfly:~# lsof -c sshd | grep lzma
2
root@dragonfly:~#
#7636256
Lesenswert?

Jörg W. schrieb:

Daniel A. schrieb:

Aber hier hatte es nun sogar Sicherheitsrelevante Auswirkungen!

Das war just auch mein Eindruck, nachdem ich das gelesen hatte.

Ja, ohne den sd_notify Patch wären libsystemd und liblzma nicht nötig. Dann hätte man genau den gleichen Angriff eben mit einer anderen lib realisiert. OK, andere libs werden nicht von so vielen Programmen benutzt, aber was nützt das dem Angreifer?

Der sshd benutzt z.B. libz aka zlib, muss der sshd png-Bilder auspacken? Egal, meinetwegen soll er, aber deren Homepage macht auch nicht den Eindruck, dass da ein großes junges Team dahinter steht. Oder die libwrap, Wietse Venema's TCP wrappers, stammt auch von einem Einzelkämpfer, oder? Aber so richtig stilecht wäre es natürlich, die libselinux zu missbrauchen :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren