ubuntuusers.de

shell Befehl aus heise Artikel unklar

Status: Ungelöst | Ubuntu-Version: Ubuntu MATE 22.04 (Jammy Jellyfish)
Antworten |

Rechnungstore

Anmeldungsdatum:
18. Februar 2011

Beiträge: 164

Moin Zusammen,

im verlinkten heise Artikel (https://www.heise.de/news/Linux-Sicherheitsluecke-in-glibc-bringt-Angreifern-Root-Privilegien-9614333.html) wird folgender Befehl zur Überprüfung der Verwundbarkeit durch eine Sicherheitslücke in der glibc erwähnt:

1
(exec -a "`printf '%0128000x' 1`" /usr/bin/su < /dev/null)

Kann das jemand erklären? Der printf-Teil ist mir sogar klar, weil das jemand in den Kommentaren des Artikels bereits sehr gut erklärt hat. Der Rest gibt mir aber Rätsel auf.

- für die Option "-a" von exec steht in der manpage nichts

- die shell durch den printf-Befehl ersetzen? wofür?

- /dev/null an su umleiten? soweit ich weiß, liest su überhaupt nicht von stdin. und wofür?

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7770

$ help exec
      -a name	pass NAME as the zeroth argument to COMMAND

zeroth argument - $0 - der Name des Befehls.

der muss mit dem Befehl/der Binary selbst nicht übereinstimmen (jedes Shellscript ist eigentlich /bin/bash aber $0 ist dann trotzdem scriptname.sh - Befehlsaliase a la LVM funktionieren auch so)

durch das printf wird hier ein ungewöhnlich langer Name erzeugt und dann su mit diesem Namen ausgeführt

alles in allem soll das einen Bug in der glibc triggern. normalerweise dürfte nichts ungewöhnliches passieren


Mit dem < /dev/null bin ich mir unsicher, es wird hier eigentlich nicht benötigt. Das Ergebnis ist mit oder ohne gleich. Vielleicht war es ein Versuch die Passwortabfrage zu unterbinden?

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4658

Wohnort: Berlin

@Rechnungstore: In welcher man-Page hast Du nachgeschaut? Bei mir steht -a beschrieben. Das setzt den Namen des ausgeführten Programms, also das was in C in argv[0] steht.

Wenn man die Standardeingabe von su nicht umleitet, dann nimmt das Programm an, dass es in einem interaktiven Terminal läuft, vermute ich mal. Um das zu verhindern und su zu einem Fehlschlag ohne etwas eingeben zu müssen zu bewegen, könnte diese Umleitung sein.

Der Artikel umschreibt ja im Grunde nur den CVE: https://www.qualys.com/2024/01/30/cve-2023-6246/syslog.txt. Da stehen die Details.

Rechnungstore

(Themenstarter)

Anmeldungsdatum:
18. Februar 2011

Beiträge: 164

Besten Dank euch beiden für die Antworten.

@Marc_BlackJack_Rintsch: ich Idiot habe einfach man exec aufgerufen und hatte nicht auf dem Schirm, dass es sich um ein shell-builtin handelt.

@frostschutz: dadurch ist es mir schon mal etwas klarer als zuvor, aber noch nicht ganz. Wieso denn $0? Das erste Argument für su müsste doch in $1 stehen? Wieso überhaupt exec? Wieso muss die shell durch su ersetzt werden anstatt einfach "ganz normal" su auszuführen?

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7770

Rechnungstore schrieb:

Wieso denn $0? Wieso überhaupt exec? Wieso muss die shell durch su ersetzt werden anstatt einfach "ganz normal" su auszuführen?

Wenn du su normal ausführst, kannst du $0 ja nicht setzen bzw. nur indirekt über einen Symlink auf su - der sich in der Form des printfs aber gar nicht erst erzeugen lässt weil zu lang.

$0 ist "Zufall", der Bug könnte genausogut in einem anderen Argument ($1 aufwärts), in einer Konfigurationsdatei, in einer Umgebungsvariable oder sonst wo liegen.

su ist interessant weil es ein suid-Binary ist das immer mit Root-Rechten ausgeführt wird.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6464

Wohnort: Hamburg

su ist interessant weil es ein suid-Binary ist das immer mit Root-Rechten ausgeführt wird.

Wie muss ich das verstehen? Gilt das nur für den Startvorgang und für den Fall, dass kein Benutzername angegeben wurde?

Ich benutze su recht oft in der Form:

su <anderer_benutzer>

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4658

Wohnort: Berlin

@Dakuan: Damit su Dich zu einem anderen Benutzer machen kann, auch wenn dieser Benutzer dann nicht root ist, braucht es ja die entsprechenden Rechte.

Antworten |