Saugumo problemos

Taint pavyzdys
    $arg = shift;               # $arg is tainted
    $hid = $arg, 'bar';         # $hid is also tainted
    $line = <>;                 # Tainted
    $line = <STDIN>;            # Also tainted
    open FOO, "/home/me/bar" or die $!;
    $line = <FOO>;              # Still tainted
    $path = $ENV{'PATH'};       # Tainted, but see below
    $data = 'abc';              # Not tainted

    system "echo $arg";         # Insecure
    system "/bin/echo", $arg;   # Secure (doesn't use sh)
    system "echo $hid";         # Insecure
    system "echo $data";        # Insecure until PATH set

    $path = $ENV{'PATH'};       # $path now tainted

    $ENV{'PATH'} = '/bin:/usr/bin';
    delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};

    $path = $ENV{'PATH'};       # $path now NOT tainted
    system "echo $data";        # Is secure now!

    open(FOO, "< $arg");        # OK - read-only file
    open(FOO, "> $arg");        # Not OK - trying to write

    open(FOO,"echo $arg|");     # Not OK, but...
    open(FOO,"-|")
        or exec 'echo', $arg;   # OK

    $shout = `echo $arg`;       # Insecure, $shout now tainted

    unlink $data, $arg;         # Insecure
    umask $arg;                 # Insecure

    exec "echo $arg";           # Insecure
    exec "echo", $arg;          # Secure (doesn't use the shell)
    exec "sh", '-c', $arg;      # Considered secure, alas!

    @files = <*.c>;             # Always insecure (uses csh)
    @files = glob('*.c');       # Always insecure (uses csh)

  • Perl'o dokumentacija šiuo klausimu: http://www.soften.ktu.lt/software/perl/perlsec.html
  • Aleph One žinutė BUGTRAQ platinimo sąraše su nuorodomis į su sistemų saugumu susijusius informacijos šaltinius: http://www.soften.ktu.lt/~kaspar/perl_cgi/aleph1