Attacking the kernel via its command line
Attacking the kernel via its command line
Posted Jun 21, 2017 2:10 UTC (Wed) by thestinger (guest, #91827)In reply to: Attacking the kernel via its command line by corbet
Parent article: Attacking the kernel via its command line
1) nothing
2) firmware
3) firmware / bootloaders
4) firmware / bootloaders / kernel
This is where the distributions being talked about are. I don't think it provides any substantial security properties. Maybe I'm missing something, and if so I'd like to know what...
5) firmware / bootloaders / kernel / base OS
This is where it starts becoming useful. At the very least, it's possible to get guarantees like an Android factory reset being guaranteed to wipe away any malware unless verified boot is exploited. That's the primary guaranteed offered by non-hardened Android: all of the fanciness of the hardware root of trust, the late stage bootloader verifying the kernel and the kernel verifying the entire base OS pretty much just adds up to hardened factory resets when done via booting directly into recovery rather than doing it from the OS.
6) firmware / bootloaders / kernel / base OS / privileged code
Now an attacker needs to exploit the OS after a reboot to get back privileged code execution. Can consider this to be granular, since they may be able to persist code with some privileges but not others. At the very least it needs to protect enough code to provide some kind of useful security model despite an attacker controlling all of the unverified state.
7) firmware / bootloaders / kernel / base OS / privileged code / data trusted by privileged code
This is iOS, ChromeOS and where Android strives to be, but Android places a lot more trust in persistent state than iOS and ChromeOS. So you could consider Android to be here, but an attacker has so much control via /data/dalvik-cache, etc. They control system_server and privileged apps. That's one of the things CopperheadOS currently fixes to make verified boot stronger, but there's a lot more that can be done.
8) firmware / bootloaders / kernel / base OS / privileged code / data trusted by privileged code / all code
iOS is close to being here, but they only do cursory review of the third party code they're signing. It's not same thing as a system where only code from a trusted party is signed.
9) firmware / bootloaders / kernel / base OS / privileged code / data trusted by privileged code / all code / all data trusted by code
This would be ChromeOS if it didn't have extensions, apps and Android app support.
10) everything (no persistent state)
The ideal is of course not having any persistent state. Everything verified, no way for an attacker to maintain a presence without exploiting the verified boot implementation.
