Hacker News new | past | comments | ask | show | jobs | submit login

Ouch. Been a rough week for OpenBSD.

And their errata description linked from the CVE seems... sorta obfuscatory: "ld.so may fail to remove the LD_LIBRARY_PATH environment variable for set-user-ID and set-group-ID executables in low memory conditions."

This is true, but really fails to capture the fact that this is a trivially exploitable local root. "Low memory conditions" refers not to global system state but to the availability of memory to the process, which is under the control of the attacker via setrlimit().

Not good, folks.




I think it's actually been a good week for OpenBSD. Last week, all of those issues were unpatched.


Hopefully next week will be better.


The CVE is text is accurate, the commit is an abbreviation. I wish they would've included the CVE in the commit message though.

OpenBSD through 6.6 allows local users to escalate to root because a check for LD_LIBRARY_PATH in setuid programs can be defeated by setting a very small RLIMIT_DATA resource limit. When executing chpass or passwd (which are setuid root), _dl_setup_env in ld.so tries to strip LD_LIBRARY_PATH from the environment, but fails when it cannot allocate memory. Thus, the attacker is able to execute their own library code as root.

Also, certain system calls like set(e)[gu]id should be pledged() opt-out rather than opt-in. It's probably a breaking change in a lot of software, but only some calls should ever be called in limited scopes where they're used and then prevented from being called ordinarily. You don't all the always doors unlocked, especially the ones that lead outside from the 11th floor without a fire escape, if you're only using a few of them.


Since passwd requires setuid, it would obviously choose to be able to call setuid.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: