ld.so.preload not multilib safe
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
glibc (Ubuntu) |
Confirmed
|
Medium
|
Unassigned |
Bug Description
If you modify /etc/ld.so.preload you must use native libraries only or the system WILL break. This becomes a problem when trying to integrate LibSafe. Consider the following two scenarios:
IA-32:
- Install 32-bit Ubuntu for IA-32
- Install libsafe
- Add /lib/libsafe.so to /etc/ld.so.preload
- All executed programs are run with libsafe
x86-64:
- Install 64-bit Ubuntu for x86-64
- Install x86-64 libsafe
- Install IA-32 libsafe
- Add /lib/libsafe.so to /etc/ld.so.preload
- Add /lib32/libsafe.so to /etc/ld.so.preload
- 64-bit programs use /lib/libsafe.so
- 32-bit programs use /lib32/libsafe.so
- 64-bit SUID programs complain that /lib32/libsafe.so won't link in and REFUSE TO RUN. This totally breaks sudo and su.
In summary, using ld.so.preload on a multilib system will allow only ld.so.preload for whatever binary architecture the setuid programs are; and if not all SUID programs are in the same architecture (i.e. some are IA-32 and some are IA-64), then ld.so.preload cannot be used.
The solution is to patch libc6 to use /etc/ld.so.preload and /etc/ld.
This bug should be reported upstream as well.
Changed in glibc: | |
assignee: | jbailey → nobody |
Changed in glibc (Ubuntu): | |
status: | Invalid → Confirmed |
status: | Confirmed → New |
Changed in glibc (Ubuntu): | |
status: | New → Confirmed |
Thanks for this! I don't think this is an upstream bug, since they don't officially support multiple architectures without chroots. It becomes a distro problem at that point.
Tks,
Jeff Bailey