Reflections on Trusting Trust - by Ken Thompson

In 1984 the Communications of the ACM published an article, Reflections on Trusting Trust. Which is an amazing, and disturbing read about software trust.

The article begins with the exercise, "create a program which can replicate itself."

This leads deftly to the idea of modifying a compiler such that every time code is compiled it adds a security vulnerability. The author points out that this kind of problem in a compiler could and would be found rather quickly.

However, it takes a compiler to compile a new compiler. With this in mind, and the techniques in place for writing self replicating code, one could write a compiler that detected when it was compiling a new compiler and inject its self replicating code into the new compiler.

Thompson certainly makes you question just how much you can trust your code - unless you fully control every aspect of your system.

Comments

How funny you should mention this

I was just reading something slightly similar from Guido about Python's security model just today. He briefly mentions automatic code injection, but focuses more on hand-tuned security vulnerabilities.

An interesting read.