in reply to Re^2: Taint and Shellshock
in thread Taint and Shellshock
Perhaps I don't understand the parent node as it was intended, but if I do correctly grok it, I think it's misleading, at best.
Oversimplifying a bit, when the -T CLI option is on, anything that comes from outside the script is "tainted."
Untainting data (be it ENV, $vars or anything else) can be fairly easy... but often is anything but 'easy' or simple. Consider, for example, data received as input from a form on a website.
However, take a simple case, where login_data (an ID and yeah, this is old) was supposed to be five digits -- no more, no less, and nothing that's not an (arabic) digit. Since the user entry is tainted, the cgi in use untaints the login_data (to the site owner's satisfaction) by checking that the id received consists of exactly five digits:
unless ( $value =~ /^\d{5}$/ ) # UNTAINT { out_badlog(); warn ("bad after UNTAINT\n"); exit; }
Ascertaining that the five digits comprise a valid ID is a different topic and is performed in another part of the script.
So, moving on to this from perlsec:
"SECURITY MECHANISMS AND CONCERNS
Taint mode
Perl automatically enables a set of special security checks, called *taint mode*, when it detects its program running with differing real and effective user or group IDs. The setuid bit in Unix permissions is mode 04000, the setgid bit mode 02000; either or both may be set. You can also enable taint mode explicitly by using the -T command line flag. This flag is *strongly* suggested for server programs and any program run on behalf of someone else, such as a CGI script."
perlsec offers much more of relevance to the immediately previous comment from kennethk.
There's more in perlfaq7.pod about determining "if a variable (emphasis supplied) is tainted" ...after which pf7 offers these gems:
" You can use the tainted() function of the Scalar::Util module, ....See also 'Laundering and Detecting Tainted Data' in perlsec."
Frankly, I (for just one, I hope) was unaware (because of far too cursory reading of its docs) that S:C offered capabilities there. I hope this belated epiphany is useful to others.
Updated: Para 1 added and paras 2,3 and 4 edited for clarity
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Taint and Shellshock
by kennethk (Abbot) on Sep 27, 2014 at 20:33 UTC | |
by ww (Archbishop) on Sep 28, 2014 at 03:47 UTC | |
by tobyink (Canon) on Sep 28, 2014 at 20:40 UTC | |
by ww (Archbishop) on Sep 29, 2014 at 02:20 UTC | |
by kennethk (Abbot) on Sep 29, 2014 at 17:50 UTC | |
| |
by kennethk (Abbot) on Sep 28, 2014 at 15:51 UTC |