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

30.2 Typische Schwachstellen bei PERL Skripten

  1. Die Ausf�hrung externer Kommandos (sei es durch system() oder auch ganz einfach bei einer Pipeline mit open()) ist grunds�tzlich sehr gef�hrlich, wenn eine Angreifer auf die �bergabeparameter Einflu� nehmen kann.

  2. Wenn bei auszuf�hrenden Kommandos kein absoluter Pfadname angegeben wird, kann es "�berraschungen" durch eine manipulierte Umgebungsvariable PATH, IFS ... geben oder durch vorgeschobene Kommandos eines Angreifers, die weiter vorne im Pfad vor dem eigentlich gew�nschten Kommando liegen.

  3. Sowohl bei open() als auch bei system() sind beliebige Shell-Metazeichen zugelassen. Wenn eine Einfl��m�glichkeit auf die Zeichenkette existiert, die der Shell �bermittelt wird, ist es damit leicht m�glich, ein Kommando des Angreifers anzuh�ngen, z.B. ; rm -rf /, welches die Festplatte l�scht.....

  4. Die Shell trennt Kommandozeilen auf Basis der Umgebungsvariablen IFS auf. Wenn die z.B. auf den Schr�gstrich gesetzt wird, dann wird aus einem absoluten Kommandonamen beispielsweise unerwartet das Kommando usr.

  5. Wenn Dateien zum Schreiben er�ffnet werden:
    1. wenn der Dateiname in Abh�ngigkeit von Angaben eines Angreifers gew�hlt wird,
    2. die zu kreierende Datei in einem vom Angreifer beeinflu�baren Verzeichnis liegt, oder
    3. wenn der Dateiinhalt beeinflu�t werden kann.

  6. Eine typische Falle kann hier die M�chtigkeit von open() darstellen. W�hrend open(OUT, $filename) recht harmlos aussieht, wird dies zum idealen Angriffspunkt, wenn beispielsweise $filename am Ende ein Pipeline-Zeichen erhalten kann oder wichtige Systemdateien (wie z.B. /etc/passwd) bedroht werden k�nnen.

  7. Selbst wenn auf $filename kein Einflu� ausge�bt werden kann, kann das Anlegen tempor�rer Dateien in �ffentlichen Verzeichnissen (z.B. /tmp) zur t�dlichen Falle werden, wenn dort der Angreifer zuvor einen symbolischen Verweis auf /etc/passwd f�r den zu erwartenden Dateinamen hinterlie�.

  8. Nat�rlich sind auch viele weitere Systemaufrufe gef�hrlich wie z.B. mkdir, chmod, chown usw.

  9. Perl selbst ist zwar immun gegen den Hauptangriffspunkt bei in C geschriebenen Programmen auf Basis von Puffer-�berl�ufen, jedoch sind m�glicherweise in C geschriebene Programme oder hinzugeladene Bibliotheken bedroht.

  10. Typische Fallen sind hier Umgebungsvariablen (z.B. HOME), die auf extrem lange Werte gesetzt werden und damit aufgerufene Shells zur Ausf�hrung mit �bergebenen Codes des Angreifers bringen k�nnen (diese Technik ist als stack smashing bekannt). Weitere Kandidaten sind die Umgebungsvariablen USER oder LOGIN, bei denen h�ufig naive Annahmen �ber deren maximale L�nge gemacht wird.

  11. Weitere Probleme kann es mit (ansonsten �berpr�ften) Kommandozeilenargumente geben, die zu lang sind.

  12. Auch Eingaben, die �ber eine Pipeline an ein fremdes Programm erfolgen, k�nnen einen Angriffspunkt darstellen, wenn z.B. gets statt fgets auf der einlesenden Seite verwendet wird.

  13. H�ufig werden solche Sicherheitsaspekte bei Hilfsprogrammen nicht beachtet, da sie alleine genommen kein Sicherheitsrisiko darstellen.


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