|
|
Message-ID: <5424320B.7000107@oracle.com>
Date: Thu, 25 Sep 2014 16:17:31 +0100
From: John Haxby <john.haxby@...cle.com>
To: oss-security@...ts.openwall.com
CC: chet.ramey@...e.edu
Subject: Re: CVE-2014-6271: remote code execution through bash
On 25/09/14 04:01, Chet Ramey wrote:
> On 9/24/14, 9:30 PM, Solar Designer wrote:
>
>>>>>> The bash patch seems incomplete to me, function parsing is still
>>>>>> brittle. e.g. $ env X='() { (a)=>\' sh -c "echo date"; cat echo
There seems to be a wider issue even when we have well-formed functions
coming in, for example,
env rm='() { echo will not; }' bash -c 'rm core'
Well, that's OK, I thought, I'll just start my scripts with
PATH=...
unalias -a
unset -f $(typeset -F)
or something like that. But what if
env unset='() { :; }' bash ...
unset does nothing now.
command unset -f $(typeset -F)
countered with
command='() { eval "$@"; }'
At some stage scripts are going to break, especially if they're relying
on command, but this whole exercise leaves me feeling uneasy. ssh and
sudo both restrict environment variables, but I just tried this:
$ xxx='() { echo hello; }' su
Password:
# xxx
hello
Of course, su isn't affected, but if I drop one of these in for an
overly-trusting admin who runs su on my terminal ...
My feeling is that if you're going to import functions from the
environment then you should do that explicitly either through a switch
(--import?) or a builtin that can import all or selected functions. Or
both.
I worry that simply fixing CVE-2014-6271 and CVE-2014-7129 is just
setting the scene for the next parser problem.
jch
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.