Computer security is broken, but things are starting to improve
economist.com
economist.com
What we have achieved is that if you are willing to keep things simple and give up much of the modern world (e.g. JITs) you can build far more secure software than what was possible in the past. What we have done is extend the realm of the possible in both the direction of security and vulnerability (e.g. before TrustZone it wasn't possible to leverage TrustZone to exploit a kernel).
[0]: https://en.wikipedia.org/wiki/Heap_spraying [1]: https://www.internetsociety.org/doc/dachshund-digging-and-se...
So each time the JIT (re)compiles the code, it can call mprotect on the target page to allow writes and disable execution. Then after it's done, it calls mprotect again to disable writes and allow execute.
1. Put shell code in a string in some js,
2. get browser to JIT js and thus write the string that contains the shell code to an execute page in memory,
3. exploit a vulnerability and point the instruction pointer to the location of the string which contains the shellcode.
Normally, i.e. outside of a JIT, this wouldn't work because the string would be saved to a non-executable page.
That makes sense. Thanks!
Here you'll find the latest in information security.
For example, here are just the top entries at the emoment.
How I found a command injection vulnerability in my TV set while in bed (and how I exploited it using nc)
PS4 4.0x WebKit Exploit Writeup (github.com)
How to find 56 potential vulnerabilities in FreeBSD code in one evening
Detecting and recovering from brute-forced RDP attacks (xednaps.com)
CVE-2017-2416 Remote code execution triggered by malformed GIF in ImageIO framework (blog.flanker017.me)
It's a fascinating field and the number of exploits appearing everyday is truley scary.
It must be difficult to get better because new software comes out all the time, and old software stays around. So the attack surface grows. IoT really pushes that model hard. I know the firmware in my TV hasn't changed since I bought it, but the newer model of the same TV has different firmware.
If you read to the end of the article, it discusses recent DARPA projects that are addressing the tools and languages component. And most of this stuff is still in heavy development. Even assuming that we get it sorted out soon, it will still be years and years before most deployed software is built on these improved foundations.
So yes, things are starting to get better. But it will take a long time before we see the results.
It's a fairly big jump for me to see the low end vendors adopting high end techniques when they don't even use ancient best practice.
My how things have not changed since 1999.
[0]: http://man.openbsd.org/pledge, [1] https://www.youtube.com/watch?v=F_7S1eqKsFk
That said I do agree that pushes, especially from Google, have made HTTPS much more secure lately.
(I'm actually an Economist subscriber, I just wasn't logged in.)