[471] in linux-security and linux-alert archive

home help back first fref pref prev next nref lref last post

Re: ld.so gaping hole.

daemon@ATHENA.MIT.EDU (Joshua Cowan)
Wed Nov 8 17:09:27 1995

Date: Tue, 7 Nov 1995 02:24:24 -0600
From: Joshua Cowan <jcowan@jcowan.reslife.okstate.edu>
To: SysAdmin - TNET Systems <root@TNET.portage.net>
Cc: linux-security@tarsier.cv.nrao.edu
In-Reply-To: <Pine.LNX.3.91.951106225831.5382A-100000@TNET.portage.net>

>>>>> "CG" == SysAdmin  <- TNET Systems <root@TNET.portage.net>> writes:

    CG> I meant it will not fix the 'ld.so' hole.  I don't think you
    CG> understand how big this hole is or how much of a problem it
    CG> is.

This is correct, I don't understand how big this ``hole'' is or even
where it is.  ;-) I don't think you understand this feature's
implementation, but that doesn't mean you don't.  :-)

    CG> other then modifying telnetd worked for me.  I am baffled on
    CG> why static linking did not work.  However, a few have reported
    CG> the same results with static linking. :/

Hmm...  If this is accurate, then this _is_ a problem (again, IMHO)
--- albeit not the ``hole'' that you are reporting.  I don't see how
the dynamic linker can be coerced into replacing symbols in the
executable image with external ones, tho --- it's job is to resolve
the undefined symbols only, AFIAK.

    CG> The point is: any user can run 'strings' on 'ld.so' and check
    CG> for the names of the environment variables.  Masking these
    CG> names from 'strings' would be an appropriate answer to this
    CG> problem.  Remember, this is about security, and the balance of
    CG> security between ease of use.

I don't think this is a problem under the current implementation: it
would be a pain for each site to generate a ``password'' so it could
protect a feature of `ld.so' from ``normal'' users (I say ``password''
because that is essentially what this is doing).  As far as increased
security with the dynamic linker, the HP implementation as described
by Aleph One is the best I've heard thus far (although it would mean
another big change in the system software).  I happen to think the
implementation of `ld.so' is _at_least_ adequate, tho.

    CG> would be a problem.  If you have developers on your system,
    CG> and trust them to use different libraries, then they are
    CG> obviously trusted enough to obtain this information

    CG> if the user belongs to a specific group, eg: developers Using
    CG> this method, you could keep the old names of the environment
    CG> vars, and allow trusted users access to that particular group.

I imagine this being bothersome, especially when you consider that, if
you use the first suggestion, you will have to implement a
site-dependent method of generating the environment strings (and that
would be a _big_ problem for distribution developers).

As for the second, sites would inevitably end up with uid 0 in the
group of trusted users and encounter the same problem all over again.

    CG> 'login', to gain access to this hole.  This is what I am
    CG> trying to avoid.  Any SUID binary on your system can be
    CG> exploited this way.

It (the telnetd hole) has nothing to do with the binary being
suid/sgid.

--
Joshua Cowan <jcowan@hermit.reslife.okstate.edu> __| I don't want to listen
http://hermit.reslife.okstate.edu/~jcowan       | but it's all too clear...
Computer Engineering Student -- Oklahoma State University -- Stillwater, OK
PGP key available from any PGP keyserver or by fingering the above address.

home help back first fref pref prev next nref lref last post