-
Notifications
You must be signed in to change notification settings - Fork 15
The New Turing Omnibus Chapter 60 Computer Viruses
We began by discussing the chapter from the book and confirming that we all had similarly misprinted diagrams explaining how a virus interacts with a Disk Operating System. We attempted to decipher the meaning of the diagram regardless but wondered if we would have benefited from reading the earlier chapter on Disk Operating Systems.
We agreed that the chapter suffered for its age as we discussed whether the techniques described were still in use today or rendered obsolete by the introduction of defences such as Gatekeeper, System Integrity Protection and Secure Enclave.
We then spent the majority of the meeting discussing how "viruses" (and that terminology) have changed since the chapter was written.
We discussed the early prevalence of Microsoft Office formats as a delivery mechanism for viruses over the internet and how the fact that they used to be memory dumps from the various Office programs and therefore inherently executable might explain this.
We touched on whether "virus" is an outdated term as there are now more specialised attacks such as ransomware. We wondered what qualified a virus as being "state-sponsored" (was it particularly sophisticated? well executed? wide-reaching in scale?) and touched on Stuxnet and the denial service of attack on GitHub from the Great Firewall of China.
Discussing countermeasures, we explored the use of fuzz testing such as American Fuzzy Lop to detect vulnerabilities in software. Similarly, Chris mentioned using Klee to automate discovery of errors and James talked about Hypothesis.
We mentioned recent vulnerabilities in WordPress and, most incredulously, an exploit in gstreamer's NES music file support.
Finally, Tom led us through Ken Thompson's "Reflections on Trusting Trust" and we learnt to never trust anything ever again.
- There were comments that the chapter seemed light on content and has not aged particularly well (especially relative to the other chapters we've discussed) and whether its selection betrayed a lack of enthusiasm for the book's remaining chapters
- As there's only one more meeting this year, we decided to do one more chapter from the book and then start the new year by picking a new central theme for the club (see Things to read or do next)
- Home
- Documentation
- Choosing a Topic
- Shows & Tells
- Miscellaneous
- Opt Art
- Reinforcement Learning: An Introduction
- 10 Technical Papers Every Programmer Should Read (At Least Twice)
- 7 More Languages in 7 Weeks
- Lua, Day 1: The Call to Adventure
- Lua, Day 2: Tables All the Way Down
- Lua, Day 3
- Factor, Day 1: Stack On, Stack Off
- Factor, Day 2: Painting the Fence
- Factor, Day 3: Balancing on a Boat
- Elm, Day 1: Handling the Basics
- Elm, Day 2: The Elm Architecture
- Elm, Day 3: The Elm Architecture
- Elixir, Day 1: Laying a Great Foundation
- Elixir, Day 2: Controlling Mutations
- Elixir, Day 3: Spawning and Respawning
- Julia, Day 1: Resistance Is Futile
- Julia, Day 2: Getting Assimilated
- Julia, Day 3: Become One With Julia
- Minikanren, Days 1-3
- Minikanren, Einstein's Puzzle
- Idris Days 1-2
- Types and Programming Languages
- Chapter 1: Introduction
- Chapter 2: Mathematical Preliminaries
- Chapter 3: Untyped Arithmetic Expressions
- Chapter 4: An ML Implementation of Arithmetic Expressions
- Chapter 5: The Untyped Lambda-Calculus
- Chapters 6 & 7: De Bruijn Indices and an ML Implementation of the Lambda-Calculus
- Chapter 8: Typed Arithmetic Expressions
- Chapter 9: The Simply-Typed Lambda Calculus
- Chapter 10: An ML Implementation of Simple Types
- Chapter 11: Simple Extensions
- Chapter 11 Redux: Simple Extensions
- Chapter 13: References
- Chapter 14: Exceptions
- Chapter 15: Subtyping – Part 1
- Chapter 15: Subtyping – Part 2
- Chapter 16: The Metatheory of Subtyping
- Chapter 16: Implementation
- Chapter 18: Case Study: Imperative Objects
- Chapter 19: Case Study: Featherweight Java
- The New Turing Omnibus
- Errata
- Chapter 11: Search Trees
- Chapter 8: Random Numbers
- Chapter 35: Sequential Sorting
- Chapter 58: Predicate Calculus
- Chapter 27: Perceptrons
- Chapter 9: Mathematical Research
- Chapter 16: Genetic Algorithms
- Chapter 37: Public Key Cryptography
- Chapter 6: Game Trees
- Chapter 5: Gödel's Theorem
- Chapter 34: Satisfiability (also featuring: Sentient)
- Chapter 44: Cellular Automata
- Chapter 47: Storing Images
- Chapter 12: Error-Correcting Codes
- Chapter 32: The Fast Fourier Transform
- Chapter 36: Neural Networks That Learn
- Chapter 41: NP-Completeness
- Chapter 55: Iteration and Recursion
- Chapter 19: Computer Vision
- Chapter 61: Searching Strings
- Chapter 66: Church's Thesis
- Chapter 52: Text Compression
- Chapter 22: Minimum spanning tree
- Chapter 64: Logic Programming
- Chapter 60: Computer Viruses
- Show & Tell
- Elements of Computing Systems
- Archived pages