Rather dangerous bug is present in output processing after "command
substitution" in bash 1.xx. It seems to be NOT present in bash 2.0.x, but
I haven't found any bugreport on this vulnerability. I looked for:
'command substitution', 'ff', 'subshell' and '$(' CHANGES file, no
effects... Seems to be one of these 'silently fixed' bugs - IMHO the most
dangerous group ;) As bash 1.14.x is shipped with most of the
distributions and seems to be widely used - here's an advisory.

It's nothing than a possible reason of 'unexplainable' bugs - as long as
we're talking about unprivledged scripts/commands. But with scripts at uid
0 (no matter, launched by root or via sudo), it seems to be deadly harmful
- if only attacker has any control on output of one of the nested commands
- and usually he has. Real-life example:

HEADER=3D"`head -1 $INPUT_FILE`"

If we can put 'magic' content into input file, we can put arbitrary output
on EVERY subsequent nested command - for example (yep, another real-life
example ;):

SAFEFILE=3D`mktemp /tmp/secure-XXXXXX`

=2E..in this case, we can alternate rendered SAFEVALUE to anything we want
- what about making /etc/passwd our 'safe temporary file'?;)

Believe or not, usually it's wonderful weapon again custom 'anti-hacker'
scripts launched from crontab, as it process OUR files, OUR processes and
almost always subshells are called for some purposes (awk/sed/tr combos=20
are lovely)... Let's see, some ideas on malicious attacker-dependent
values used in root scripts:

- argv[]s (on sudo scripts)
- /proc entries (against home-made /proc scanners)
- file names (against home-made fs scanners)
- file contents
- hostnames (remote scanners)
- service banners (remote scanners)
- and much more...

Ok, ok, an experiment follows - no comments necessary:

[root@nimue:1 /testing]# cat test.sh
#!/bin/sh

FIRST=3D"`cat $1`"
SECOND=3D`whoami`
THIRD=3D`echo something`

echo "[$FIRST] [$SECOND] [$THIRD]"

[root@nimue:1 /testing]# od -v -t x1 -A n test
 54 45 53 54 31 ff 54 45 53 54 32 ff
[root@nimue:1 /testing]# cat test
TEST1=FFTEST2=FF
[root@nimue:1 /testing]# ./test.sh
[TEST1] [TEST2] [something]

=2E..while the proper output should be:

[TEST1=FFTEST2=FF] [root] [something]

Nothing more to say... 0xff character has deadly meaning :P

Btw. has any of Midnight Commander developers an idea WHY mc is
still vulnerable on #lslR attack I've posted days ago? Seek BUGTRAQ
archives, people? Again, this problem does not affect Slackware, but
seems to be present in .tar.gz official releases?

_______________________________________________________________________
Michal Zalewski [lcamtuf@ids.pl] [link / marchew] [dione.ids.pl SYSADM]
[Marchew Industries] ! [http://lcamtuf.na.export.pl] bash$ :(){ :|:&};:
[voice phone: +48 22 813 25 86] <=3D-=3D> [cellular phone: +48 501 4000 69]
Iterowac jest rzecza ludzka, wykonywac rekursywnie - boska [P. Deutsch]