lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4B82197F.4050902@metux.de>
Date:	Mon, 22 Feb 2010 06:43:27 +0100
From:	Enrico Weigelt <weigelt@...ux.de>
To:	unlisted-recipients:; (no To-header on input)
CC:	linux-kernel@...r.kernel.org
Subject: Re: Dynamic linking in the kernel

David Miller wrote:

> In order to implement this the kernel would have to also save a copy
> of all pieces of the processes's environment and compare all of the
> environment variable settings on every execution.  This would be
> needed to handle things like LD_PRELOAD, LD_LIBRARY_PATH, and LD_DEBUG
> as just three examples.

Fairly simple:

* parsed per-module data is cached by its inode id
* cached data that can be influenced by LD_PRELOAD/LD_LIBRARY_PATH
  (eg. mapping of library names to actual filenames or inode-id's)
  is cached on hash of these variables plus inode-id

> What's more, any filesystem change involved in the shared libraries,
> the executable, or the dynamic linker would have to be monitored as
> well.

What could go wrong ?

a) overwring an currently mapped-in library. this also applies to
   the traditional approach as well. write-locking (w/o locking
   against removal, of course ;-)) might help.
b) filesystems could get remounted while modules are already cached:
   that (IMHO) changes the inode-id's as well, so not affecting the
   inode-id based cache lookups
c) permissions could get changed: either use the inode data we can on
   the file lookups (we most likely wont get rid of) or use inotify.

> Really, this is not a good idea, and the cost is only ~3 system calls
> per shared library and considering the amount of flexibility we get in
> return it's not that bad at all.

It's worth much more than that:

a) able to cache much data that now have to be parsed/computed on
   each single exec (eg. dependencies, symbol tables, etc)
b) sharing pages even when mmap() is not available


cu
-- 
----------------------------------------------------------------------
 Enrico Weigelt, metux IT service -- http://www.metux.de/

 cellphone: +49 174 7066481   email: info@...ux.de   skype: nekrad666
----------------------------------------------------------------------
 Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
----------------------------------------------------------------------

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ