Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING

30.3 Lösungsmöglichkeiten

  1. Bei Skripten mit s-bit sind grundsätzlich alle Umgebungsvariablen mit äußerster Vorsicht zu behandeln, wenn irgendwelche Kommandos oder Pipelines gestartet werden. Insbesondere sind PATH und IFS neu zu setzen und alle anderen Umgebungsvariablen sollten in ihrer Länge begrenzt werden.

  2. Jeder Systemaufruf open() und jeder Aufruf von system() sollten ganz genau daraufhin untersucht werden, inwieweit hier Abhängigkeiten von den Eingaben eines Angreifers vorliegen.

  3. Temporäre Dateien sollten in privaten Verzeichnissen angelegt werden, die für niemanden sonst zugänglich sind oder es sollte mit O_EXCL und O_CREAT gearbeitet werden (dies empfiehlt sich übrigens generell!).

  4. Generell sollte überprüft werden, welche Privilegien tatsächlich wie lange notwendig sind:

    1. Es ist möglicherweise sinnvoll, den Prozeß (ggf. ab einem bestimmten Zeitpunkt) oder einen Kindprozeß unter einer chroot-Umgebung oder unter einer Benutzerberechtigung laufen zu lassen, die nur sehr wenig Rechte gibt.

    2. Ein Prozeß, der mit der Außenwelt in Verbindung steht, kann unter sehr restriktiven Bedingungen laufen und alle gefährlichen Operationen an einen weiteren Prozeß mit normalen Privilegien delegieren. Diese Architektur wird z.B. von smtpd und smtpfwdd von Obtuse verwendet.


Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING