Schwachstellen in swhkd, einem Hotkey-Manager fĂŒr Wayland

Im swhkd (Simple Wayland HotKey Daemon) wurden eine Reihe von SicherheitsanfÀlligkeiten entdeckt, die durch fehlerhafte Verarbeitung von temporÀren Dateien, Kommandozeilenparametern und Unix-Sockets verursacht werden. Das Programm ist in Rust geschrieben und verarbeitet Tastenkombinationen in Umgebungen, die auf dem Wayland-Protokoll basieren (kompatibel auf Ebene der Konfigurationsdateien mit dem Prozess sxhkd, der in Umgebungen auf Basis von X11 verwendet wird).

Das Paket umfasst den nicht privilegierten Prozess swhks, der Aktionen fĂŒr die Tastenkombinationen ausfĂŒhrt, sowie den Hintergrundprozess swhkd, der mit Root-Rechten ausgefĂŒhrt wird und mit EingabegerĂ€ten auf API-uinput-Ebene interagiert. FĂŒr die Interaktion zwischen swhks und swhkd wird ein Unix-Socket verwendet. Mit Hilfe von Polkit-Regeln hat jeder lokale Benutzer die Möglichkeit, den Prozess /usr/bin/swhkd mit Root-Rechten zu starten und ihm beliebige Parameter zu ĂŒbergeben.

Festgestellte Schwachstellen:

  • CVE-2022-27815 — Speicherung der Prozess-PID in einer Datei mit einem vorhersehbaren Namen und in einem von anderen Benutzern beschreibbaren Verzeichnis (/tmp/swhkd.pid). Jeder Benutzer kann die Datei /tmp/swhkd.pid erstellen und die PID eines bestehenden Prozesses darin ablegen, was dazu fĂŒhrt, dass swhkd nicht gestartet werden kann. Bei fehlendem Schutz gegen das Erstellen symbolischer Links in /tmp kann die Schwachstelle genutzt werden, um Dateien in jedem Systemverzeichnis zu erstellen oder zu ĂŒberschreiben (die PID wird in die Datei geschrieben) oder den Inhalt jeder Datei im System zu bestimmen (swhkd gibt den gesamten Inhalt der PID-Datei in stdout aus). Bemerkenswert ist, dass in dem veröffentlichten Patch die PID-Datei nicht in das Verzeichnis /run, sondern in das Verzeichnis /etc (/etc/swhkd/runtime/swhkd_{uid}.pid) verschoben wurde, wo sie ebenfalls nicht hingehört.
  • CVE-2022-27814 — Durch Manipulation des Befehlszeilenparameters „-c“, der zur Angabe der Konfigurationsdatei verwendet wird, kann das Vorhandensein jeder Datei im System festgestellt werden. Zum Beispiel, um /root/.somefile zu ĂŒberprĂŒfen, kann „pkexec /usr/bin/swhkd -d -c /root/.somefile“ ausgefĂŒhrt werden, und wenn die Datei nicht vorhanden ist, wird die Fehlermeldung „/root/.somefile doesn’t exist“ ausgegeben. Wie bei der ersten Schwachstelle ist auch die Behebung des Problems unverstĂ€ndlich — die Problemlösung besteht darin, dass zum Lesen der Konfigurationsdatei jetzt das externe Dienstprogramm „cat“ aufgerufen wird (‘Command::new(„/bin/cat“).arg(path).output()’).
  • CVE-2022-27819 — Das Problem hĂ€ngt ebenfalls mit der Verwendung der Option „-c“ zusammen, ĂŒber die die Konfigurationsdatei vollstĂ€ndig geladen und ohne ÜberprĂŒfung der GrĂ¶ĂŸe und des Dateityps analysiert wird. Zum Beispiel kann zur Auslösung eines Denial-of-Service durch Erschöpfung des freien Speichers und Erstellung parasitĂ€rer Ein-/Ausgaben beim Start ein BlockgerĂ€t angegeben werden („pkexec /usr/bin/swhkd -d -c /dev/sda“) oder ein ZeichengerĂ€t, das einen endlosen Datenstrom ausgibt. Das Problem wurde durch das ZurĂŒcksetzen der Berechtigungen vor dem Öffnen der Datei behoben, aber das Patchen war unvollstĂ€ndig, da nur die Benutzer-ID (UID) zurĂŒckgesetzt wird, die Gruppen-ID (GID) jedoch unverĂ€ndert bleibt.
  • CVE-2022-27818 — Zur Erstellung eines Unix-Sockets wird die Datei /tmp/swhkd.sock verwendet, die in einem öffentlich beschreibbaren Verzeichnis erstellt wird, was zu Ă€hnlichen Problemen wie die erste Schwachstelle fĂŒhrt (jeder Benutzer kann /tmp/swhkd.sock erstellen und Ereignisse von Tasteneingaben generieren oder abfangen).
  • CVE-2022-27817 — Eingaben werden von allen GerĂ€ten und in allen Sitzungen akzeptiert, d. h. ein Benutzer aus einer anderen Wayland-Sitzung oder von der Konsole kann die Eingaben abfangen, wenn andere Benutzer die Tastenkombinationen drĂŒcken.
  • CVE-2022-27816 — Der Prozess swhks verwendet, wie swhkd, eine PID-Datei /tmp/swhks.pid in einem fĂŒr Schreibzugriffe öffentlichen Verzeichnis /tmp. Das Problem Ă€hnelt der ersten Schwachstelle, ist jedoch weniger gefĂ€hrlich, da swhks unter einem unprivilegierten Benutzer ausgefĂŒhrt wird.

Quelle: opennet.ru

60GB SSD 8Gb DDR4