Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Dec 1999 07:43:29 +1100
From:      Peter Jeremy <peter.jeremy@alcatel.com.au>
To:        Robert Watson <robert+freebsd@cyrus.watson.org>
Cc:        freebsd-security@FreeBSD.ORG, asami@FreeBSD.ORG
Subject:   Re: From BugTraq - FreeBSD 3.3 xsoldier root exploit (fwd)
Message-ID:  <99Dec17.073504est.40321@border.alcanet.com.au>
In-Reply-To: <Pine.BSF.3.96.991216135055.26813G-100000@fledge.watson.org>; from robert@cyrus.watson.org on Fri, Dec 17, 1999 at 05:56:26AM %2B1100
References:  <14425.12637.308602.637788@anarcat.dyndns.org> <Pine.BSF.3.96.991216135055.26813G-100000@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
I've copied to Asami-san since I believe his input is critical to any
changes to the ports mechanism.

On 1999-Dec-17 05:56:26 +1100, Robert Watson <robert@cyrus.watson.org> wrote:
>Yup, it's déjà vu all over again.  If you want a heavy-handed security
>approach, here's how you do it.  Define two new Makefile ports variables:
>
>HAS_MISC_SET_ID= {yes,no}
>HAS_ROOT_SETUID= {yes,no}

I think `MISC' is too general.  I'd split it into `games' (since there
seems to be a general concensus that setuid-games is the least
unsavoury way to handle machine-wide high-scores files) and `misc' (in
case a game wants to be setuid something else - though I can't think
of any justification for other UIDs).  We also need an `unsafe' marker
to support the install alarms.  How about adding the following as
well:

HAS_GAMES_SETUID= {yes,no}
IS_UNSAFE= {yes,no,maybe}

>Starting today, warn all ports maintainers that their ports must (ideally
>correctly) define these variables for all of their ports.

The middle of a ports freeze is a bad time for this.  (Though, if the
infrastructure was ready at the end of the ports freeze, it would
make a clear transition point).

>  In two weeks,
>any port that doesn't define both variables is marked as broken.

Two weeks might be a bit short.  I don't believe there's any pressing
need for this (the critical deadline to meet would be the next
CD-ROM pressing - which is now several months off).  I would think
that a month might be better (Asami-san would have a better idea of
a reasonable period). 

>We then have an effective and mandated list of ports making use of set?id
>binaries.  Each one of these ports undergoes a security view by the
>auditing team--not to fix bugs, just to identify whether the source code
>is prone to bugs (extensive use of string functions in unsafe ways, etc)
>-- a twenty minute thing.

Doesn't this just build a false sense of security?  A guick-and-dirty
review is guaranteed to miss things (or rather, miss more things than
a thorough review), as well as generate lots of false positives.  How
do you placate a developer/maintainer whose cherished port has been
unjustly given an "unsafe" tag because the reviewer couldn't spend the
time to confirm that every code path into a potentially unsafe function
included the validation necessary to make the function safe?  How do we
respond to the (inevitable) BUGTRAQ posts which state that `the FreeBSD
Security Auditing Team gave the program a clean bill of health but
missed the following security hole ...'?

Lest the above sound too negative, I think Robert's approach is a good
idea.  I'm just not sure about the details.

Peter


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-security" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?99Dec17.073504est.40321>