On 4/20/22 12:47, Kees Cook wrote: >> For what it's worth, bimfmt_flat (with or without shared library >> support) should be simple to implement as a binfmt_misc handler if >> anyone needs the old shared library support (or if kernel wanted to >> drop it entirely, which I would be in favor of). That's how I handled >> old aout binaries I wanted to run after aout was removed: trivial >> binfmt_misc loader. > > Yeah, I was trying to understand why systems were using binfmt_flat and > not binfmt_elf, given the mention of elf2flat -- is there really such a > large kernel memory footprint savings to be had from removing > binfmt_elf? elf2flat is a terrible name: it doesn't take an executable as input, it takes a .o file as input. (I mean it's an elf format .o file, but... misleading.) > But regardless, yes, it seems like if you're doing anything remotely > needing shared libraries with binfmt_flat, such a system could just use > ELF instead. A) The binfmt_elf.c loader won't run on nommu systems. The fdpic loader will, and in theory can handle normal ELF binaries (it's ELF with _more_ capabilities), but sadly it's not supported on most architectures for reasons that are unclear to me. B) You can't run conventional ELF on nommu, because everything is offset from 0 so PID 1 eats that address range and you can't run exec program. You can run PIE binaries on nommu (the symbols offset from a base pointer which can point anywhere), but they're inefficient (can't share text or rodata sections between instances because every symbol is offset from a single shared base pointer), and highly vulnerable to fragmentation (because it needs a contiguous blob of memory for text, rodata, bss, and data: see single base pointer everything has an integer offset from). All fdpic really does is give you 4 base pointers, one for each section. That way you can share text and rodata, and put bss and data into smaller independent fragments of memory. Various security guys use this as super-aslr even on mmu systems, but tend not to advertise that they're doing so. :) Rob