
Dokumentation zu CVE-2022-36162: eine lokale Command-Injection-Schwachstelle im hovacui PDF-Viewer 1.1.0 über die HOME-Umgebungsvariable und die postsave-Konfigurationsoption.
[Vorgeschlagene Beschreibung] pdftoroff hovacui 1.1.0 ist betroffen von: Befehlsausführung. Die Auswirkung ist: Ausführung beliebigen Codes (lokal). Die Komponente ist: hovacui.c, Zeile 1574. Der Angriffsvektor ist: Um die Schwachstelle auszunutzen, muss man nur die Umgebungsvariable HOME ändern, einen Befehl als postsave eintragen, eine PDF-Datei öffnen und speichern. Eine Schwachstelle wurde in hovacui gefunden, die beliebige Befehlsausführung ermöglichen kann. Zeile 1574: 1574 system(command); Die Umgebungsvariable HOME wird vertraut, und der Angreifer kann sie fälschen. Dann kann der Angreifer einen beliebigen Befehl als
postsavein der Konfigurationsdatei eintragen, und alles, was noch zu tun bleibt, ist, eine PDF-Datei zu öffnen und zu speichern. Dies kann Codeausführung, Denial of Service oder EoP-Auswirkungen auf die Maschine haben.
[Zusätzliche Informationen] hovacui Der hovacui-PDF-Betrachter für den Linux-Framebuffer und X11 zoomt automatisch auf die Textblöcke. Er ist für die Betrachtung von Dateien auf kleinen Bildschirmen gedacht und eignet sich besonders für mehrspaltige Dokumente.
hovacui ist Teil von pdftoroff, Link: https://aur.archlinux.org/packages/pdftoroff
Der Pfad zur Konfigurationsdatei wird wie folgt ermittelt
snprintf(configfile, 4096, "%s/.config/hovacui/hovacui.conf", 3358\t\t\tgetenv("HOME"));
Wir können also einfach HOME fälschen und unsere eigene Konfigurationsdatei erstellen.
Und um Befehlsausführung zu erreichen, speichern wir einfach die PDF-Datei, denn in der Funktion savepdf() haben wir:
else { cairoui_printlabel(cairoui, output->help, NO_TIMEOUT, "saved to %s", path); if (post && output->postsave != NULL) { command = malloc(strlen(output->postsave) + 100); sprintf(command, output->postsave, fileno, fileno); system(command); free(command); } return CAIROUI_DONE; }}
output->postsave wird vollständig vom Angreifer kontrolliert: if (sscanf(configline, "postsave %900[^
\r]", s) == 1) output.postsave = strdup(s); Zum Speichern gibt man einfach d ein, gefolgt von s hovacui-Webseite: http://sgerwk.altervista.org/hovacui/hovacui.html
[Schwachstellentyp Sonstiges] Befehlsausführung
[Anbieter des Produkts] pdftoroff
[Betroffene Produkt-Codebasis] hovacui - 1.1.0
[Betroffene Komponente] hovacui.c, Zeile 1574
[Angriffsart] Lokal
[Auswirkung Codeausführung] true
[Auswirkung Denial of Service] true
[Auswirkung Rechteausweitung] true
[Angriffsvektoren] Um die Schwachstelle auszunutzen, muss man nur die Umgebungsvariable HOME ändern, einen Befehl als postsave eintragen, eine PDF-Datei öffnen und speichern.
[Entdecker] Maher Azzouzi
[Referenz] http://hovacui.com http://pdftoroff.com http://sgerwk.altervista.org/hovacui/hovacui.html https://aur.archlinux.org/packages/pdftoroff