Yes, ASLR doesn't address the root bugs. Yes, ASLR can be bypassed. But it still lowers the overall risk and so is worth having around.
You're saying it protects against "inept" attackers, that lowers risk.
No need to nitpick a simple analogy.
Thank you, that is a very nice label for an annoying phenomenon.
ASLR changes the game in that instead of a control flow vulnerability needing to be found, you also need an info leak and the ability to put that into the exploit.
That’s a nontrivial improvement.
By volume no. There are enormous numbers of low-level and mid-level hackers out there working for any number of interests. You have to be a pretty elite level of organised crime before your attacks reach the level achieved by nation states.
Security design is to some extent a cost tradeoff - the more you spend on security the more the attackers are going to have to spend on attacking you. If you're dealing with insensitive data, and are only going to be of interest to script kiddies, then you can spend only a little. If you're a widely deployed device, and people use it to store sensitive data that might be of interest to nation states, then you have to spend enormously more to mitigate against it.
Layered security or "defence in depth" is how anyone in the field will tell you to design secure devices these days. ASLR doesn't do anything on its own, it just amplifies the cost of any other attack, as does other mitigations like W^X. No layer is ever 100% secure in the real world. But 5 layers that are 99.9% secure make for a difficult to attack system.
No single measure will ever be sufficient, one should never become complacent like that...
This all comes down to C designers ignoring the security best practices of other systems programming languages, and UNIX clones having mainstream adoption.
Morris worm (1988) wouldn't have been possible in regular Modula-2 (1978) code, nor Ada (1983), Mesa (1976), ESPOL/NEWP (1961), PL/I (1964), PL/S (1974), BLISS (1970), just citing a couple of them.
Yet C17 still doesn't provide language features to prevent another Morris worm, and the security Annex was made optional instead.
Can you please expand on this point?
For example, ESPOL/NEWP was the first systems programming language with explicit unsafe blocks, 8 years before C came into the world.
So hardware that was much weaker than PDP-11, and yet capable of supporting such security features.
Burroughs B5000 OS is still being developed, nowadays known as Unisys ClearPath MCP, and its top selling feature is being a mainframe system for customers whose security is the top priority.
What's special about it?
> Bounds checking, explicit unsafe blocks, proper strings, explicit type conversions, proper enumerations, checked arithmetic.
Plus a capabilities based security access, and unsafe blocks taint binaries, requiring admin permission to be executed.
Recent hardware versions use Xeons.
Again, just features missing from C, and available in other languages.
Another notable feature, it did not make use of any Assembly, in 1961, because all CPU features are exposed as compiler intrinsics.