¿Su truco original, en ese compilador específico? No. ¿Más generalmente? Sí.
El ensayo de Ken Thompson se titula “Reflexiones sobre confiar en la confianza”. El punto real de ese ensayo, si lo retira todo, es que en cualquier sistema que desee proteger, debe establecer una raíz de confianza verificable. Su truco demuestra que un compilador puede evitar que (de una manera muy nefasta) establezca esa raíz.
Podrías montar el ataque de Ken contra otro compilador. Cualquiera que sea el compilador que atacó Ken probablemente no funciona o el sistema ha cambiado lo suficiente como para que sus trucos de coincidencia de patrones ya no se activen. Pero, la técnica general es sólida.
- ¿Qué método debo usar para hacer una prueba de esfuerzo en una computadora?
- ¿Cuáles son algunas cosas que el software MediaWiki obtuvo desde el principio? ¿Cuáles son las cosas que se equivocaron?
- ¿Qué es un buen proyecto de aprendizaje automático que involucra interfaces cerebro-computadora?
- ¿Puede un generador de salida aleatorio ser 'Turing completo'?
- ¿Cómo se usan los BITS de computadora para representar las letras del alfabeto?
Para establecer una raíz de confianza, debe asegurarse de que todos los niveles de la pila de software sean confiables. El compilador proporciona una capa de abstracción. Hay al menos una, si no dos capas de abstracción debajo del compilador y encima del silicio. (Esto supone que confiamos en el silicio).
El punto de Ken, en realidad, es que a menos que haya analizado toda la pila (es decir, la salida compilada y las bibliotecas que invoca), no puede confiar en que el código fuente que alimentó al compilador representa lo que realmente se ejecuta en el máquina. Y si construyes el mecanismo de subversión en el compilador, puede ser muy difícil de encontrar.
Y eso es porque la mayoría de la gente confía en el compilador. Es el nivel de abstracción más bajo con el que suelen lidiar. Desde una perspectiva de ingeniería social, infectar al compilador es muy poderoso, ya que casi nadie cuestiona al compilador. Es solo una herramienta. Sin embargo, lo que realmente deberían estar cuestionando son los desarrolladores del compilador.
_____________
EDITAR: Bruce Schneier hizo una publicación de blog hace algunos años que detalla una forma de detectar el ataque Trusting Trust. Es un enfoque simple: contrarrestar la “confianza de confianza”
Pero … tienes que hacer que la gente lo haga.