On Fri, December 15, 2006 5:12 pm, Ilia Alshanetsky wrote:
> And here is your first exploit, let's say we say
> mysql_real_escape_string() takes tainted data and makes it untainted,
> what happens when this "safe" data is passed to exec(). You are going
> to need to deal with different levels of taint-untainted and 1 bit is
> not going to give you that flexibility. You are going to need an int/
> long, maybe even a long long.

I think the presumption is that most developers smart enough to be
using mysql_real_escape_string() is PROBABLY smart enough to not just
blindly pass its output to exec().

Or, more likely, that most developers smart enough to use
mysql_real_escape_string() will code more like:

$input = $_REQUEST['input']; //tainted
$input_sql = mysql_real_escape_string($input); //untainted
$input_exec = escapeshellarg($input); //untainted
exec("/whatever $input"); //E_ERROR

Ooops, I made a typo!

So "taint" will only catch, say, 99% of the naive scripters who don't
filter data, and an occasional typo for the experts.

Nobody is claiming it will catch this one:
$input = $_REQUEST['input']; //tainted
$input_sql = mysql_real_escape_string($input); //untainted
$input_exec = escapeshellarg($input); //untainted
exec("/whatever $input_sql"); //false negative, oh well

Still sounds like it's worth considering, if the performance and
maintainability penalties are not too high.

-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some starving artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to