RFE: Portable OpenSSH
Dan Kaminsky
dankamin at cisco.com
Tue Mar 27 12:55:39 EST 2001
Mandating static linking is ridiculous. Mandating dynamic linking is
equally ridiculous, though. I choose not to have compilers on production
machines, and I'm finding myself more and more annoyed when I have to move
arsenals of libraries and whatnot from one platform to another just to get
the binaries working.
> * Static linking prevents libc_psr.so.1 from working for platform
> specifics. This library automatically enables dynamically linked
> programs from linking in platform specific versions of various
> library routines which are optimized for a particular platform.
I don't want to run code I don't trust. I want to run code I do trust.
> * Static linking greatly increases working set size and disk footprint.
I don't care how big the code I trust is. Memory big. Security small.
Must increase security--can buy memory.
> * Statically linked executables are NOT necessarily binary compatible
> between releases.
> eg. statically linked programs that use libsocket will
> failed if compiled on 2.5.1 or less and run on 2.6
I can recompile code I trust.
> * Running a static binary compiled on the base could cause a program
> to bypass some security checks when running under Trusted Solaris.
> This doesn't open a vulnerability but might mean a program won't
> get the extra privilege it was configured with.
If Trusted Solaris uses dynamic libraries to enforce security, it deserves
what it gets.
> * Patches to system libaries for bug fixes and performance enhancements
> are not automatically picked up by the application. Consider security
> fixes to libc not being available to your application.
"Patches to system libraries for bug creation and performance degredations
are not automatically picked up by the application. Consider a security
hole in the new glibc simply being irrelevant."
Again, it comes down to creating a snapshot of code I do trust vs. a moving
target of code I'm linking against.
> * Some debugging libraries/tools will fail to work properly.
> eg. malloc debugging.
I don't want to debug code on my production server.
> * Localistation via setlocale(3c) / gettext(3c) is not supported when
> libc is statically linked.
I'm not moving. :-)
It's all about options. More than a few admins around here would jump at
the chance to make SSH self-dependant; my most immediate goal may just be
dealing with libz(the only real external runtime dependancy).
--Dan
More information about the openssh-unix-dev
mailing list