[Bug 1700272] Re: ldd secure execution mode
Launchpad Bug Tracker
1700272 at bugs.launchpad.net
Sun Jun 25 14:10:06 UTC 2017
Status changed to 'Confirmed' because the bug affects multiple users.
** Changed in: glibc (Ubuntu)
Status: New => Confirmed
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to glibc in Ubuntu.
https://bugs.launchpad.net/bugs/1700272
Title:
ldd secure execution mode
Status in glibc package in Ubuntu:
Confirmed
Bug description:
Hello,
I noticed that ldd gives wrong results when run
a) with the LD_LIBRARY_PATH environment variable set to some folder and
b) on a binary that will be launched in "secure execution mode" by ld.so (see "man ld.so").
Steps to reproduce:
1. Create a file hello_world.c:
#include <stdio.h>
int main() {
puts("Hello, World!");
puts("Press enter to quit");
scanf("%*c");
}
2. Compile:
$ gcc -o hello_world hello_world.c
3. Attach a capability to the compiled binary, in order to trigger secure execution mode:
$ sudo setcap CAP_NET_BIND_SERVICE=ep hello_world
4. Make the system's libc available somewhere else:
$ cp /lib/x86_64-linux-gnu/libc.so.6 .
In this setup, when you run LD_LIBRARY_PATH=. ldd hello_world, then ldd will report that the binary will use the libc in the local folder.
Actual output:
$ LD_LIBRARY_PATH=. ldd hello_world
linux-vdso.so.1 => (0x00007ffdbb76a000)
libc.so.6 => ./libc.so.6 (0x00007f68a182a000)
/lib64/ld-linux-x86-64.so.2 (0x00005651d2ef7000)
However, when you actually run the binary with
$ LD_LIBRARY_PATH=. ./hello_world
then the binary will use the standard library search path and _not_ use ./libc.so.6 .
You can see this by starting the binary in one terminal, and running the following command in another terminal while the binary is still running:
$ sudo cat /proc/$(pidof hello_world)/maps
This gives me an output like:
[...]
7f76193d5000-7f7619595000 r-xp 00000000 fc:00 2494866 /lib/x86_64-linux-gnu/libc-2.23.so
7f7619595000-7f7619795000 ---p 001c0000 fc:00 2494866 /lib/x86_64-linux-gnu/libc-2.23.so
7f7619795000-7f7619799000 r--p 001c0000 fc:00 2494866 /lib/x86_64-linux-gnu/libc-2.23.so
7f7619799000-7f761979b000 rw-p 001c4000 fc:00 2494866 /lib/x86_64-linux-gnu/libc-2.23.so
[...]
I believe that this is due to the secure execution mode mentioned in
the ld.so man page, so this probably also affects set-uid binaries and
possibly some other environment variables that control the linker
behaviour.
I'm using Ubuntu 16.04.2 (LTS). ldd is on version "ldd (Ubuntu GLIBC
2.23-0ubuntu9) 2.23". The libc-bin package (containing ldd) has
version "2.23-0ubuntu9".
Best regards!
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1700272/+subscriptions
More information about the foundations-bugs
mailing list