Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: basesrc
> | Modified Files:
> | basesrc/lib/libc/net: res_query.c
> |
> | Log Message:
> | don't look at $HOSTALIASES, if issetugid() says the binary is dirty.
> |
> | i really hate this change.
>Same here. What's the problem supposed to be, aside from FUD ?
>As long as the library routines that read $HOSTALIASES are doing it
>properly (if it wants to be super safe, abandon stdio and just malloc
>a buffer, or use the stack, read(2) into it, then zap the buffer (memset())
>before returning to user code). But setuid() binaries that allow users
>to get access to data in their mem leave more holes than can be exploited
>via HOSTALIASES.
there are more issues than coredump scenario (stdio buffer visible)
jason mentioned - actually, by allowing $HOSTALIASES couple of other
attack scenarios are possible. basically, we can never allow fopen()
in setuid'ed privilege here.
there are couple of ways to fix it:
- disallow $HOSTALIASES for setuid'ed binary - the committed one
- open $HOSTALIASES in real uid, in library code only - very hard
to achieve, many presented me diffs to do this but aren't very correct
- open $HOSTALIASES in real uid, using some help from new
openwithrealuid()-like system call - not sure if we want it now
- assume all users of DNS resolver function to drop setuid
before calling any name resolution functions - NO WAY
The first solution has been in FreeBSD and OpenBSD for more than
3 years.
>So, is this change any more than a reaction to a bug that was in SunOS?
are you talking about coredump case? no.
>And if not, can it be undone please?
the situation is much worse.
itojun
Home |
Main Index |
Thread Index |
Old Index