In der Benutzerumgebung Enlightenment wurde eine SicherheitsanfĂ€lligkeit (CVE-2022-37706) entdeckt, die es einem nicht privilegierten lokalen Benutzer ermöglicht, Code mit Root-Rechten auszufĂŒhren. Die SicherheitsanfĂ€lligkeit ist noch nicht behoben (0-day), aber es gibt bereits einen öffentlich zugĂ€nglichen Exploit, der auf Ubuntu 22.04 getestet wurde.
Das Problem besteht in der ausfĂŒhrbaren Datei enlightenment_sys, die mit dem SUID-Root-Flag geliefert wird und mithilfe des system()-Aufrufs bestimmte erlaubte Befehle ausfĂŒhrt, wie z. B. das Mounten von Speicher mit dem Befehl mount. Aufgrund eines fehlerhaften Aufbaus der Zeichenkette, die an den system()-Aufruf ĂŒbergeben wird, werden AnfĂŒhrungszeichen aus den Startargumenten des ausgefĂŒhrten Befehls entfernt, was ausgenutzt werden kann, um eigenen Code auszufĂŒhren. Zum Beispiel bei der AusfĂŒhrung mkdir -p /tmp/net mkdir -p "/tmp/;/tmp/exploit" echo "/bin/sh" > /tmp/exploit chmod a+x /tmp/exploit enlightenment_sys /bin/mount -o noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u), "/dev/../tmp/;/tmp/exploit" /tmp///net
Durch das Entfernen der doppelten AnfĂŒhrungszeichen wird an die Funktion system() anstelle des angegebenen Befehls "/bin/mount ... "/dev/../tmp/;/tmp/exploit" /tmp///net" eine Zeichenkette ohne doppelte AnfĂŒhrungszeichen ĂŒbergeben: "/bin/mount ... /dev/../tmp/;/tmp/exploit /tmp///net", was dazu fĂŒhrt, dass der Befehl "/tmp/exploit /tmp///net" separat ausgefĂŒhrt wird, anstatt als Teil des GerĂ€tepads behandelt zu werden. Die Zeichenfolgen "/dev/../tmp/" und "/tmp///net" sind so gewĂ€hlt, dass sie die ArgumentĂŒberprĂŒfung des mount-Befehls in enlightenment_sys umgehen (das zu mountende GerĂ€t muss mit "/dev/" beginnen und auf eine bestehende Datei verweisen, und die drei Zeichen "/" im Mountpunkt sind angegeben, um die erforderliche PfadlĂ€nge zu erreichen).
Quelle: opennet.ru
