¿Alguien sabe si hay algún problema que deba tener en cuenta?
El problema principal es que el lenguaje de secuencias de comandos (por ejemplo, PHP) que analiza la cookie puede implementarse en un idioma (por ejemplo, C) que trata el carácter de byte NULO (0x00) como un carácter de control especial.
Por ejemplo, en el lenguaje C, una "cadena" de longitud N se implementa como una matriz de N + 1 caracteres, donde el carácter (N + 1) al final de la matriz es 0x00, que se usa para Indica el final de la cadena.
El principio general de seguridad que se está violando aquí es la combinación inesperada de instrucciones (el carácter de control tipo instrucción 0x00) con datos. Las cookies generalmente se consideran cadenas de datos , pero debido a que el byte nulo tiene una propiedad de control especial en C (indica el final de las cadenas y puede hacer que las rutinas de análisis de cadenas regresen) funciona de alguna manera más como una instrucción que datos .
Este es un ejemplo específico de cómo el byte nulo podría causar problemas: podría ser posible cargar un archivo llamado "backdoor.php \ x00.png" que contenga el código de puerta trasera de PHP. Incluso si los archivos php están en la lista negra para que no se carguen, este archivo podría seguir subiéndose ya que la extensión es ".png". Si el análisis del nombre de archivo PHP (que se implementa en C) devuelve incorrectamente en el carácter de byte nulo, el archivo podría guardarse con el nombre "backdoor.php" y luego ejecutarse accediendo al archivo en la carpeta de cargas. Este tipo de exploit se llama "Inyección de bytes nulos".
No tengo conocimiento de una vulnerabilidad específica basada en un carácter nulo en una cookie, pero la idea es similar a la anterior y explotaría las propiedades especiales del byte nulo en el lenguaje de implementación del código que analiza la cookie.