Page MenuHomeFreeBSD

rtld: Reject ELF files with PT_LOAD or PT_TLS segments where filesz > memsz
ClosedPublic

Authored by jhb on Wed, Jul 29, 7:23 PM.
Tags
None
Referenced Files
F168232363: D58541.diff
Thu, Aug 27, 2:07 AM
F168231897: D58541.diff
Thu, Aug 27, 2:03 AM
F168210719: D58541.diff
Wed, Aug 26, 10:14 PM
Unknown Object (File)
Wed, Aug 26, 12:08 AM
Unknown Object (File)
Tue, Aug 25, 9:58 PM
Unknown Object (File)
Tue, Aug 25, 8:09 PM
Unknown Object (File)
Tue, Aug 25, 5:26 PM
Unknown Object (File)
Sun, Aug 23, 7:58 PM
Subscribers

Details

Summary

All sorts of places in the ELF loading code assume that filesz <=
memsz, so check that explicitly up front. The kernel already performs
this check for the PT_LOAD segments in the main binary and rtld in
imgact_elf.c.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 75276
Build 72159: arc lint + arc unit

Event Timeline

jhb requested review of this revision.Wed, Jul 29, 7:23 PM

I do not object, but I also note that rtld trusts the format of the objects to be correct. There is a lot of missed bounds checks.

This revision is now accepted and ready to land.Thu, Jul 30, 4:24 AM

There's also lib/libc/gen/tls.c for PT_TLS

There's also lib/libc/gen/tls.c for PT_TLS

Oof, thanks for catching that, I'll add another commit for that.