DerHandbuch zur Systemadministration für UNIX und Linuxsagt:
man verwaltet einen Cache formatierter Seiten in /var/cache/man oder /usr/share/man, wenn die entsprechenden Verzeichnisse beschreibbar sind; dies stellt jedoch ein Sicherheitsrisiko dar. Die meisten Systeme formatieren die Manpages einmal bei der Installation vor (siehe catman) oder überhaupt nicht.
Was ist hier das „Sicherheitsrisiko“?
Es besteht das offensichtliche Sicherheitsrisiko, dass jemand die Manpages ändern kann, um einen (unerfahrenen) Benutzer dazu zu bringen, etwas Unerwünschtes auszuführen, wie inUlrich Schwartz in ihrer Antwort, aber ich suche nach anderen Möglichkeiten, wie dies ausgenutzt werden könnte. Danke!
Antwort1
Es ist nicht sicher, Benutzer den Inhalt von Manpages (oder eigentlich alle Daten) manipulieren zu lassen, die auch von anderen Benutzern verwendet werden, denn es besteht die Gefahr vonCache-Vergiftung. Wie der alte B.O.F.H.-Witz geht:
Um alles über Ihr System zu erfahren, von der Wurzel an, verwenden Sie den Befehl „Handbuch lesen“ mit dem Schalter „Schneller lesen“ wie folgt:
rm -rf /
(Deutlich sein,nichtführen Sie diesen Befehl aus.) Aber wenn ich den Manpage-Cache kontrolliere, könnten Sie man rm
eine zwischengespeicherte gefälschte Manpage sehen, die Ihnen sagt, dass es rm
tatsächlich „rm - Handbuch lesen“ ist und nicht „rm - Dateien oder Verzeichnisse entfernen“. Oder sogarAusgabeterminal-Escapesequenzen, die Code in Ihre Shell einfügen.
Antwort2
Nehmen wir an, dass es sich bei dem betreffenden System um einen Webserver handelt. Nehmen wir außerdem an, dass der Administrator des Servers eine auf dem System installierte Software über eine Webseite der Öffentlichkeit (oder einem Firmenintranet) zur Verfügung stellt. Dabei kann es sich um etwas so Einfaches wie einen Bildgrößenanpasser, einen Taschenrechner oder ein Wörterbuch handeln.
Wenn der Software bei der Installation Manpages zugeordnet waren, könnte der Administrator – da er nun einmal ein freundlicher und rücksichtsvoller Mensch ist – zu dem Schluss kommen, dass es auch eine gute Idee wäre, diese Manpages den Benutzern des Webdienstes zur Verfügung zu stellen.
Das „Hilfe“-Symbol auf der Webseite startet also ein Skript, das eines oder mehrere davon erfasst –zwischengespeichert– Manpages und sendet sie an den Browser des Benutzers.
Jede Person oder jeder Code mit Schreibzugriff auf das Cache-Verzeichnis kann diese Dateien wie folgt ändern:
- Einfügen von beliebigem JavaScript, das von den Browsern der besuchenden Benutzer ausgeführt wird
- Sammeln Sie Telemetriedaten von allen besuchenden Benutzern und leiten Sie sie zur späteren Verarbeitung/Profilerstellung an ein Repository weiter
- Authentifizierungsdaten sammeln – möglicherweise sogar die Daten eines privilegierten Benutzers des Systems (wie des Administrators)
Jeder der oben genannten Punkte kann von jedem mit Fantasie und lockerer Moral/Ethik auf viele, viele verschiedene Arten missbraucht werden.
Antwort3
Jedes Mal, wenn ein Verzeichnis global beschreibbar gemacht wird, entsteht eine Sicherheitslücke. Wenn man den beabsichtigten Zweck des Verzeichnisses außer Acht lässt und wie dieser unterlaufen werden kann, ist es schon ein Problem, wenn es beschreibbar ist.
Hier sind einige mögliche Probleme, die nicht mit der Funktion des Verzeichnisses zusammenhängen:
- Wenn es keine anderen Verzeichnisse im Dateisystem gibt, in die der Benutzer schreiben kann, bietet dies jedem Benutzer die Möglichkeit, Speicherplatz in diesem Dateisystem zu nutzen, den er sonst nicht nutzen könnte.
- Jeder Benutzer könnte Dateien in diesem Verzeichnis speichern und das Dateisystem so füllen, dass ein Denial-of-Service-Angriff ausgelöst wird. Wenn es sich dabei um dasselbe Dateisystem wie /var/log handelt, könnte dies das Schreiben von Protokollen verhindern.
- In diesem Verzeichnis können Dateien außerhalb der erwarteten Speicherorte versteckt sein. Diese können nach der Kontolöschung bestehen bleiben und sind möglicherweise schwer zu finden, wenn das Dateisystem auf mysteriöse Weise voll ist.
- Wenn Dateien oder Verzeichnisse mit demselben Namen wie zukünftige zwischengespeicherte Dateien erstellt werden, kann dies die ordnungsgemäße Funktion des Verzeichnisses bei beabsichtigter Verwendung verhindern (selbst wenn der Inhalt dieser Dateien selbst nicht bösartig ist). Das Anpassen der Berechtigungen für diese Dateien kann die automatische Behebung erschweren.
Antwort4
Die meisten modernen Distributionen speichern Manpages vorab im Cache (durch Verarbeitung mit troff), wenn das entsprechende Paket installiert ist. Dies ist kein Problem.
Das Problem tritt auf, wenn die ursprünglichen Man-Dateien vorhanden sind, der Cache jedoch leer ist (d. h. die Cache-Dateien nicht vorab generiert wurden).
Es gibt zwei Möglichkeiten, damit umzugehen:
- Führen Sie die Manpage über troff aus.jedes Malals Benutzer
- Führen Sie die Manpage einmal über troff aus.Wurzelund im Cache-Verzeichnis speichern
Um als Root zu laufen, müsste man setuid sein. Wenn es irgendwelche Sicherheitsmängel inirgendetwasBeispielsweise könnte der Angreifer durch die Kommandozeilenanalyse erhöhte Rechte erlangen
Hier die entsprechende Quelle:https://git.savannah.gnu.org/cgit/man-db.git/tree/src/man.c
Glücklicherweise speichern alle großen Distributionen Manpages jetzt im Voraus, sodass es keinen Grund zur Sorge gibt.