Date: Sat, 2 Apr 2016 04:22:49 +0800 From: Lance Chen <cyen0312@...il.com> To: musl@...ts.openwall.com Subject: AS-safe change for multithreaded setxid breaks chroot() along with set*id() Hello there, I have been trying to run powerdns on Alpine Linux, which features musl, without success. It turns out that the AS-safe strategy introduced in the patch http://git.musl-libc.org/cgit/musl/commit/?id=78a8ef47c4d92b7680c52a85f80a81e29da86bb9, especially the use of reading /proc/self/task, causes the failure. The failure condition is a combination of three features, pthread, chroot, and set*id. After chroot()'ing to some directory, calling set*id() will try to access /proc/self/task, and fail to find the directory in the new root. I've created a minimal POC at https://gist.github.com/Lance0312/c7a82793e35b322bfbdfe96b79dd3152. I understand how important it is to make set*id calls AS-safe, but there might be a bunch of programs using set*id along with pthread and chroot. (postfix could be one of them, I haven't take a deeper look at it though) And I think it does not quite make sense to ask user not to use the combination of the three features. Does anyone have any possible fix for this? Or anyone know any WIP on the Linux kernel to provide a truly atomic set*id syscall among threads? Related thread: Fixing multithreaded set*id() AS-safety http://www.openwall.com/lists/musl/2014/12/20/1 Cheers, Lance Chen Download attachment "signature.asc" of type "application/pgp-signature" (820 bytes)
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.