05.02.2013 Aufrufe

Firewall Handbuch für LINUX 2.0 und 2.2 - zurück

Firewall Handbuch für LINUX 2.0 und 2.2 - zurück

Firewall Handbuch für LINUX 2.0 und 2.2 - zurück

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

30.4 Der Taint Modus bei PERL<br />

Erstellt von Doc Gonzo - http://kickme.to/plugins<br />

delegieren. Diese Architektur wird z.B. von smtpd <strong>und</strong> smtpfwdd von<br />

Obtuse verwendet.<br />

1. Der Taint-Modus von Perl gibt eine Unterstützung bei der Ausführung des<br />

Perl-Skripts, die Benutzereingaben <strong>und</strong> andere Einflußmöglichkeiten verfolgt.<br />

2. Das Prinzip ist einfach: Alle Benutzereingaben <strong>und</strong> durch Benutzer<br />

einflußbaren Variablen sind kontaminiert. Wird eine Variable gesetzt in<br />

Abhängigkeit einer kontaminierten Variable, so wird sie selbst kontaminiert.<br />

3. Kontaminierte Variablen dürfen nicht verwendet werden, um bestimmte<br />

gefährliche Operationen durchzuführen, wie z.B. SYSTEM().<br />

4. Der Modus wird durch `-T'' auf der Kommandozeile oder implizit (durch das sbit)<br />

eingeschaltet.<br />

30.5 Gefährliche Parameter bei Variablen<br />

1. Folgendes wird von Anfang an als kontaminiert betrachtet:<br />

1. alle Kommandozeilen-Argumente,<br />

2. alle Umgebungs-Variablen,<br />

3. Lokalitätsinformationen (locale),<br />

4. Resultate einiger Systemaufrufe wie readdir(2) oder readlink(2),<br />

5. das gecos-Feld aus der Paßwort-Datei (beim Zugriff über die getpw*-<br />

Prozeduren),<br />

6. Resultate von ... <strong>und</strong><br />

7. alle Eingaben (von Dateien, Netzwerkverbindungen oder anderen<br />

Kanälen).<br />

2. Eine Variable, die in Abhängigkeit einer kontaminierten Variable gesetzt wird,<br />

wird ebenfalls kontaminiert -- selbst wenn die Operation garantiert<br />

ungefährlich ist (z.B. weil der ursprüngliche Wert nicht verändert wird).<br />

3. Die Kontaminierung ist nur mit einzelnen skalaren Werten verb<strong>und</strong>en <strong>und</strong><br />

nicht mit größeren Datenstrukturen. So können bei einer Liste einige<br />

Elemente kontaminiert sein, während andere davon frei sind.<br />

30.6 Beispiele der Absicherung von PERL-Skripten<br />

Hier nun folgen ein paar Beispiele, wie man die Übergabeparameter an Skipte filtern kann:<br />

#!/usr/local/bin/perl -Tw<br />

# ...<br />

my $filename = shift @ARGV; # tainted<br />

unless ($filename =~ /^(\w+)$/) {<br />

die "Invalid filename: $filename\n";<br />

}<br />

$filename = $1; # no longer tainted<br />

open(OUT, ">$filename") || # OK<br />

die "Unable to open $filename: $!\n"<br />

# ...<br />

1. Mit Klammern erfaßte Teile eines regulären Ausdrucks werden als frei von<br />

Kontaminierung betrachtet -- selbst wenn die Zeichenkette, die dem regulären<br />

Ausdruck zugeführt wurde, kontaminiert ist.<br />

2. Damit ist es möglich, Zeichenketten nach einer Überprüfung gegen einen<br />

regulären Ausdruck normal zu verwenden.<br />

3. Natürlich muß darauf geachtet werden, daß dies nicht versehentlich<br />

geschieht.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!