Trojan Source: investigación histórica y revisión de código

Código en pantalla como ilustración de la revisión de código frente a Trojan Source
Código en una pantalla, como ilustración de la revisión de seguridad del software

Trojan Source es una técnica de engaño visual en código fuente divulgada en 2021 por Nicholas Boucher y Ross Anderson. Este artículo histórico explica la diferencia entre lo que ve una persona al revisar y la secuencia lógica de caracteres que procesa el compilador o intérprete.

Cómo aparece el engaño visual

Los caracteres de control bidireccional de Unicode pueden cambiar el orden visual del texto sin modificar su orden lógico subyacente. En un proceso vulnerable, el código puede parecer distinto a quien lo revisa de las instrucciones realmente procesadas. Una técnica relacionada utiliza caracteres visualmente parecidos de distintos alfabetos.

Esto no significa que todos los compiladores o lenguajes modernos sean vulnerables hoy. La exposición depende del lenguaje, herramientas de compilación, editor, interfaz del repositorio y sus versiones y comprobaciones. La investigación identifica la técnica bidireccional como CVE-2021-42574 y la variante con caracteres parecidos como CVE-2021-42694.

Por qué importan la revisión y la cadena de suministro

Un cambio engañoso puede superar una revisión visual y llegar a una dependencia compartida. Esa posibilidad no demuestra que un paquete concreto contenga código malicioso: hay que examinar los caracteres reales, su significado y el proceso de construcción afectado.

Comprobaciones defensivas

Utiliza compiladores, editores y herramientas de repositorio mantenidos. Activa las advertencias o comprobaciones apropiadas para controles bidireccionales sospechosos e identificadores confundibles, inspecciona los cambios señalados y prueba su comportamiento. Una advertencia ayuda a investigar, no demuestra intención maliciosa, y la inspección visual por sí sola no constituye una revisión de seguridad completa.

Referencia primaria: explicación de Trojan Source de sus investigadores y artículo enlazado. Contexto histórico revisado: 30 de octubre de 2026.