On Sat April 19 2008 05:02, Kyle Hamilton wrote:
> Ah.  This is a bit of a quandary.  But, there are a couple of options for you.
> 
> 1) Do not use ld to link to libcrypto or libssl.  Instead, use the
> ldopen() family of functions to open and bind those files yourself at
> runtime.
> 2) Use the package manager available on the system to identify what
> the best "system" version of openssl is, in conjunction with number 1.
> 3) Do not use openssl, instead use libnss (from Mozilla) or tinyssl
> (which is small enough to statically link) or one of the other SSL
> libraries out there.
> 

Static linkage is the only practical approach to this threat model -

You wouldn't want your private key or plaintext leaving the memory assigned
to the process (such as being written to swap or the filesystem) for fear
of penetration - with the same logic - you don't want the crypto functions
to exist outside of your task's memory assignment - 
translation: staticly link.

This model also means you do need to use a paired-key encryption and/or signing
on everything you dlopen/dlload - public key goes with your application, private
key that creates and/or signs the plug-ins stays in your safe at the office.

Now your remaining attack vector is run-time access to the memory assigned to
the process - - something for which protection against has few _cross-platform_
solutions.

In this situation, you have to draw the line on the various hand-springs at the
point where you could offer (and win with) the defense in a liability suit of:
"employed due diligence within the practical limits of the state of the art".

There is no "absolute security" anywhere in the world - don't waste your time 
trying
to invent it - decide (or have your legal department decide) what is "good 
enough".

Mike
> Again, be aware that different operating systems (MacOSX versus Linux
> is the one I'm most familiar with) use different names for dynamic
> libraries and the appropriate environment variables.
> 
> Now, since it's not only OpenSSL that you must worry about if you're
> looking at failure of the dynamic loader security system, you have to
> approach this problem yourself at some point regardless.  Here's some
> points:
> 
> 1) A script executed on most UNIXes will, even if marked setuid, not
> be run setuid.  This means that under most cases you cannot rely on
> the LD_LIBRARY_PATH getting stripped by running a script (except in
> the case of perl, which hacked in support for setuid scripts).
> 2) A setuid binary will not load LD_LIBRARY_PATH or its equivalents.
> I don't know if this applies to binaries that are setuid the current
> effective user ID.
> 3) LD_PRELOAD is, in a lot of ways, even more dangerous than LD_LIBRARY_PATH.
> 
> A possible means of handling this situation would be a small setuid
> loader binary that would examine the current environment and construct
> a new one with only the appropriate variables, then execve(2) the
> actual binary.
> 
> Since you're dealing with plug-ins, you're going to have to look at
> dlopen() and friends anyway.  I would suggest researching all of these
> issues before you decide on a strategy.  Each has weaknesses, each has
> strengths.
> 
> -Kyle H
> 
> On Fri, Apr 18, 2008 at 8:46 PM, Li, Yvonne <[EMAIL PROTECTED]> wrote:
> > You have lots of good points. Thank you again.
> >
> >  I work for AOL, developing cross platform SDK for instant messaging that
> >  supports plugins. Plugins can be malicious. And AOL is responsible for
> >  protecting users' identity and privacy. Considering our user base, a
> >  trojan is more likely to target our users than to protect them.
> >
> >  What do the majority applications do on Unix if static linking with
> >  openssl isn't suitable?
> >
> >
> >  Thanks.
> >
> >  Yvonne
> >
> >
> >  -----Original Message-----
> >  From: [EMAIL PROTECTED]
> >  [mailto:[EMAIL PROTECTED] On Behalf Of David Schwartz
> >
> > Sent: Friday, April 18, 2008 6:29 PM
> >  To: openssl-users@openssl.org
> >  Subject: RE: Openssl loading
> >
> >
> >
> >
> > > Thanks for your response. Shipping my own version of openssl is ruled
> >  > out. So I have to trust the system installed one. Think at least on
> >  > some Unix systems, LD_LIBRARY_PATH is searched first.
> >
> >  Right, this is beause:
> >
> >  1) A library cannot do any harm the user could not do directly. So
> >  there's no point in preventing him from replacing system libraries.
> >
> >  2) The user may need to replace a system library for a given application
> >  for various reasons, including if the system library has a bug that
> >  other programs rely on.
> >
> >  > I worry Trojan horses
> >  > hidden there. I am advised to zeroing-out this env variable before
> >  > loading openssl.
> >
> >  I would not advise this. At least as likely as a trojan is that the
> >  system-installed one has a problem and the user has installed a fixed
> >  OpenSSL build. The trojan can just as easily intercept your programs
> >  file operations to redirect the attempt to link to the system-installed
> >  OpenSSL to be to a user-provided one.
> >
> >  > What else I can do?
> >
> >  Consider very carefully whether protecting the user from himself is
> >  worth preventing him from protecting himself.
> >
> >  It's very hard to give you advice without having any understanding of
> >  what your threat model is. For example, if your program is designed to
> >  protect banking transactions, that's a very different threat model from
> >  if your program is designed to protect its own licensing.
> >
> >  DS
> >
> >
> >  ______________________________________________________________________
> >  OpenSSL Project                                 http://www.openssl.org
> >  User Support Mailing List                    openssl-users@openssl.org
> >  Automated List Manager                           [EMAIL PROTECTED]
> >  ______________________________________________________________________
> >  OpenSSL Project                                 http://www.openssl.org
> >  User Support Mailing List                    openssl-users@openssl.org
> >  Automated List Manager                           [EMAIL PROTECTED]
> >
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    openssl-users@openssl.org
> Automated List Manager                           [EMAIL PROTECTED]
> 
> 
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to