Reino: Code Quality

Una mala calidad del código lleva a un comportamiento no predecible. Desde la perspectiva de un usuario, muchas veces también supone una usabilidad limitada. Pero para un atacante es una oportunidad para atacar al sistema de formas insospechadas.

Encoding Confusion: BiDi Control Characters

Abstract
Los caracteres de control bidireccionales en el código fuente pueden provocar ataques de tipo troyano.
Explanation
El código fuente que contiene caracteres de control de anulación bidireccional Unicode puede ser signo de un ataque de amenaza interna. Dicho ataque se puede aprovechar a través de la cadena de suministro de lenguajes de programación como C, C++, C#, Go, Java, JavaScript, Python y Rust. Nicholas Boucher y Ross Anderson ya han publicado varias variantes de ataques, incluidas los siguientes: Devoluciones anticipadas, comentarios y cadenas estiradas.
Ejemplo 1: El siguiente código muestra un carácter de control, presente en un archivo de código fuente de C, que lleva a un ataque de devolución anticipada:

#include <stdio.h>

int main() {
/* Nothing to see here; newline RLI /*/ return 0 ;
printf("Do we get here?\n");
return 0;
}

El carácter de control bidireccional Unicode aislante de derecha a izquierda (RLI), en Example 1, hace que el código se vea de la siguiente manera:

#include <stdio.h>

int main() {
/* Nothing to see here; newline; return 0 /*/
printf("Do we get here?\n");
return 0;
}

Cabe destacar que un desarrollador que realiza una revisión de código, en un editor/visor vulnerable, no vería lo que procesa un compilador vulnerable. En concreto, la instrucción de devolución anticipada que modifica el flujo del programa.
References
[1] Nicholas Boucher, and R. Anderson Trojan Source: Invisible Vulnerabilities
[2] Standards Mapping - CIS Azure Kubernetes Service Benchmark 3
[3] Standards Mapping - CIS Microsoft Azure Foundations Benchmark complete
[4] Standards Mapping - CIS Amazon Elastic Kubernetes Service Benchmark 3
[5] Standards Mapping - CIS Amazon Web Services Foundations Benchmark 1
[6] Standards Mapping - CIS Google Kubernetes Engine Benchmark integrity
[7] Standards Mapping - CIS Kubernetes Benchmark partial
[8] Standards Mapping - Common Weakness Enumeration CWE ID 451
[9] Standards Mapping - OWASP Top 10 2017 A1 Injection
[10] Standards Mapping - OWASP Top 10 2021 A03 Injection
[11] Standards Mapping - Smart Contract Weakness Classification SWC-130
desc.regex.universal.encoding_confusion_bidi_control_characters