From: ebiederm@xmission.com (Eric W. Biederman)
To: Christian Brauner <christian.brauner@ubuntu.com>
Cc: Andreas Schwab <schwab@linux-m68k.org>,
Jann Horn <jannh@google.com>, Kees Cook <keescook@chromium.org>,
Al Viro <viro@zeniv.linux.org.uk>,
Andrew Morton <akpm@linux-foundation.org>,
Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>,
Eric Biggers <ebiggers3@gmail.com>,
Dmitry Vyukov <dvyukov@google.com>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
linux-security-module <linux-security-module@vger.kernel.org>,
Linux API <linux-api@vger.kernel.org>,
kernel list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/4] exec: Change uselib(2) IS_SREG() failure to EACCES
Date: Tue, 19 May 2020 09:49:11 -0500 [thread overview]
Message-ID: <87lflot1y0.fsf@x220.int.ebiederm.org> (raw)
In-Reply-To: <20200519132931.3b7yugfv2ajry6y7@wittgenstein> (Christian Brauner's message of "Tue, 19 May 2020 15:29:31 +0200")
Christian Brauner <christian.brauner@ubuntu.com> writes:
> On Tue, May 19, 2020 at 07:28:46AM -0500, Eric W. Biederman wrote:
>> Andreas Schwab <schwab@linux-m68k.org> writes:
>>
>> > On Mai 19 2020, Eric W. Biederman wrote:
>> >
>> >> I am wondering if there are source trees for libc4 or libc5 around
>> >> anywhere that we can look at to see how usage of uselib evolved.
>> >
>> > libc5 is available from archive.debian.org.
>> >
>> > http://archive.debian.org/debian-archive/debian/pool/main/libc/libc/libc_5.4.46.orig.tar.gz
>>
>> Interesting.
>>
>> It appears that the old a.out code to make use of uselib remained in
>> the libc5 sources but it was all conditional on the being compiled not
>> to use ELF.
>>
>> libc5 did provide a wrapper for the uselib system call.
>>
>> It appears glibc also provides a wrapper for the uselib system call
>> named: uselib@GLIBC_2.2.5.
>>
>> I don't see a glibc header file that provides a declaration for uselib
>> though.
>>
>> So the question becomes did anyone use those glibc wrappers.
>
> The only software I could find was ski, the ia64 instruction set
> emulator, which apparently used to make use of this and when glibc
> removed they did:
>
> #define uselib(libname) syscall(__NR_uselib, libname)
>
> but they only define it for the sake of the internal syscall list they
> maintain so not actively using it. I just checked, ski is available on
> Fedora 31 and Fedora has USELIB disabled.
> Codesearch on Debian yields no users that actively use the syscall for
> anything.
I think there is a very good argument that no one builds libraries
usable with uselib anymore. The ELF version requires a ET_EXEC binary
with one PT_LOAD segment that is loaded at a fixed virtual address.
This is a format that does not allow for relocation processing, the
loading executable has to ``know'' where the symbols are in the loaded
binary, and they have to be build to run at distinct virtual addresses.
I think I could conjure up some linker scripts to do that with no more
linker support than we use to build the kernel, but it is not easy to
maintain binaries and libraries like that as code changes. Which is
why we switched to ELF in the first place.
I think the tooling challenges plus not being able to find anything
using uselib anymore make a solid argument for going to a distribution
and asking them to stop enabling CONFIG_USELIB in their kernels.
Eric
next prev parent reply other threads:[~2020-05-19 14:52 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-18 5:54 [PATCH 0/4] Relocate execve() sanity checks Kees Cook
2020-05-18 5:54 ` [PATCH 1/4] exec: Change uselib(2) IS_SREG() failure to EACCES Kees Cook
2020-05-18 13:02 ` Christian Brauner
2020-05-18 14:43 ` Jann Horn
2020-05-18 14:46 ` Christian Brauner
2020-05-18 23:57 ` Eric W. Biederman
2020-05-19 8:11 ` Christian Brauner
2020-05-19 8:37 ` Andreas Schwab
2020-05-19 11:56 ` Eric W. Biederman
2020-05-19 12:12 ` Andreas Schwab
2020-05-19 12:28 ` Eric W. Biederman
2020-05-19 13:29 ` Christian Brauner
2020-05-19 14:49 ` Eric W. Biederman [this message]
2020-05-19 13:13 ` Christian Brauner
2020-05-19 14:32 ` Geert Uytterhoeven
2020-05-19 14:47 ` Christian Brauner
2020-05-18 5:54 ` [PATCH 2/4] exec: Relocate S_ISREG() check Kees Cook
[not found] ` <20200525091420.GI12456@shao2-debian>
2020-06-04 22:45 ` [exec] 166d03c9ec: ltp.execveat02.fail Kees Cook
2020-06-05 2:57 ` Kees Cook
2020-05-18 5:54 ` [PATCH 3/4] exec: Relocate path_noexec() check Kees Cook
2020-05-18 5:54 ` [PATCH 4/4] fs: Include FMODE_EXEC when converting flags to f_mode Kees Cook
2020-05-19 15:06 ` [PATCH 0/4] Relocate execve() sanity checks Eric W. Biederman
2020-05-19 16:26 ` Kees Cook
2020-05-19 17:41 ` Eric W. Biederman
2020-05-19 17:56 ` Kees Cook
2020-05-19 18:42 ` Eric W. Biederman
2020-05-19 21:17 ` Kees Cook
2020-05-19 22:58 ` John Johansen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87lflot1y0.fsf@x220.int.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=akpm@linux-foundation.org \
--cc=christian.brauner@ubuntu.com \
--cc=dvyukov@google.com \
--cc=ebiggers3@gmail.com \
--cc=jannh@google.com \
--cc=keescook@chromium.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=schwab@linux-m68k.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox