3 ms·
This is much more impressive: http://www.scs.stanford.edu/brop/bittau-brop.pdf http://www.scs.stanford.edu/brop/bittau-brop.pdf > Abstract—We show that it is
by cyberpunk 6y ago
This is much more impressive: http://www.scs.stanford.edu/brop/bittau-brop.pdf http://www.scs.stanford.edu/brop/bittau-brop.pdf
> Abstract—We show that it is possible to write remote stack buffer overflow exploits without possessing a copy of the target binary or source code, against services that restart after a crash. This makes it possible to hack proprietary closed-binary services, or open-source servers manually compiled and installed from source where the binary remains unknown to the attacker. Tra- ditional techniques are usually paired against a particular binary and distribution where the hacker knows the location of useful gadgets for Return Oriented Programming (ROP). Our Blind ROP (BROP) attack instead remotely finds enough ROP gadgets to perform a write system call and transfers the vulnerable binary over the network, after which an exploit can be completed using known techniques. This is accomplished by leaking a single bit of information based on whether a process crashed or not when given a particular input string. BROP requires a stack vulnerability and a service that restarts after a crash. We implemented Braille, a fully automated exploit that yielded a shell in under 4,000 requests (20 minutes) against a contemporary nginx vulnerability, yaSSL + MySQL, and a toy proprietary server written by a colleague. The attack works against modern 64-bit Linux with address space layout randomization (ASLR), no-execute page protection (NX) and stack canaries.
- not2b 6y agoAnother old paper. The defenders haven't been sitting still.
- arcanon 6y agoCan you recommend any new ones you like?
- wahern 6y agoIn this case you can just read the previous paper, which explains the caveat that PIE daemons utilizing ASLR must be so-called fork-only services--i.e. forked from a supervisor process. If they're not fork-only than you can't leak the address space layout. The suggested counter measure is to re-exec child processes so their address space is re-randomized. OpenSSH began doing this by default 10 years before the above paper: https://github.com/openbsd/src/commit/5541d005bde289515d9734dbcd513ec43bd182d2 https://github.com/openbsd/src/commit/5541d005bde289515d9734... Presumably (hopefully) some other common, multi-process network daemons have been refactored to exec child processes. As explained in the paper, nginx, which utilizes an M:N process model, was susceptible. Anybody know if nginx was refactored to fork+exec its worker processes rather than just fork? (EDIT: AFAICT via a cursory examination of ngx_master_process_cycle, ngx_start_worker_processes, and related the answer is, "no".) EDIT: See also https://lwn.net/Articles/849531/ https://lwn.net/Articles/849531/