If you’re a computer scientist and you’ve not read this seminal work, you owe it to yourself to do so. (Un)fortunately, it’s become hard to find platforms on which the attack can be reproduced in the form described, but it’s a transformative experience when you do.
Mastery of the buffer overflow attack - not just understanding it conceptually, but actually being able to execute it - is like developing a terrible superpower. You start to understand the problem of security in an entirely different way. @aleph_one’s paper made that accessible.
Anyway, @aleph_one’s paper, and an exercise based on it, is assignment #1 in every security course I teach.
Also, the timeline is notable. The Morris Worm (the first large scale buffer overflow exploit) was 1988. Smashing the Stack was 1996 and was directly usable. And here in 2021, most major OSs now ship with mitigations, but vulnerable C code is still alive and well.
Buffer overflows have had an amazingly and depressingly long tail. We knew about them well before 1988, and they can still be used to exploit real systems.
Compare this with, say, our response to Y2K. That problem was identified, there was a large but manageable and orderly effort to examine systems and eradicate it, and by 2000, it was no longer a threat. All the while, buffer overflows remained unpatched and exploited.
Part of it likely had to do with the fact that Y2K was very easy to explain, even to nonprogrammers. But you can’t really internalize the reality that buffer overflows are more than a hypothetical threat until you implement one. That’s why @aleph_one’s paper was important.
(Y2K, for you young folks, was the “Year 2000 Problem”. Many programs built in the 20th century used a two character data structure to represent years, which would be fine if the world were going to end in 1999. But if you need to compare dates from different centuries, yikes).
Y2K was a consequence of unfortunate timing in computer history coupled by with a lack of imagination. Computers were invented mid century. Two digit years were unambiguous for the recent past and immediate future for most purposes. And no one thought software lasted decades.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
For the record, I will not be offering my election integrity course at the University of Austin.
Even imagining doing that makes me want to hide under the bed.
I’m considering, however, a course in computation theory, covering such topics as Gödel’s completeness theorem, Turing’s Halting Solution, and why they don’t want you to know whether P=NP.
The thing about The Power Broker is that when you first see it you think, oh god, this is one of those impossibly long books people claim to have read but never actually do. But then once you actually crack it open, you’re just hooked.
It’s ostensibly a biography of Robert Moses, but it’s actually a political history of New York and the power of infrastructure.
“Why did you block my other account? You must be an asshole.” You might not be learning the intended lesson here.
For the record, I block people for a variety of reasons, my being a capricious asshole being only one of them. Mostly I block people for being abusive or excessively tiresome.
If you’re unhappy about this, please feel free to make a first amendment complaint about me to your nearest police precinct. They’ll be glad to help you. Or complain to my employer (that’s George Mason University, remember).
So, “cryptocurrency technology" means digital signatures and hashes, at a minimum. So, which public key signature schemes do we teach 11th graders? Something based on elliptic curves, maybe? And where in the curriculum do we introduce chosen prefix attacks against hash functions?
Also, we’ll really need to start these kids with a good foundation in number theory and finite fields, not to mention the basics of differential and linear cryptanalysis. Better start in the 8th grade or so.
Or maybe they mean things like securing digital wallets. Which means we better getting them started in serious hardware reverse engineering techniques by the 9th grade or so.
Maybe vaccines are “communist” because of their side effect of protecting not just recipients, but also those with whom they come into contact. Perhaps a proper capitalist vaccine should be developed that protects recipients while creating extra risk for everyone else.
But of course, if the market wanted such a vaccine, it should exist already.
Apropos of nothing in particular, pedantic insistence on a particular usage of some relatively unimportant technical term is invariably uninteresting. I’m reminded of a few years back when…
… some random stranger here made a big deal about how obviously I didn’t know what I was talking about when I used “cryptography” when I “clearly” would have used “cryptology” if I knew anything at all about the subject...
The truth is that while cryptography and cryptology can be narrowly distinguished (the former refers to encryption, while the latter to the study of the field broadly), virtually no one actually working in the field finds the distinction important, and uses them interchangeably.