Vulnerabilidad de cadena de formato no controlada en JavaScript

3

He estado trabajando en vulnerabilidades de validación de entrada y muy nuevas en Vulnerabilidades de cadenas de formato no controladas, como aprendí hasta ahora que generalmente se explota mediante las funciones printf con " % ".

También vi que JavaScript (Node.JS) admite cadenas de formato usando las funciones sprintf .

¿Es posible realizar ataques de cadena de formato en JavaScript, porque en CWE solo se menciona que rara vez se ve en Perl, a menudo en C y C ++. Si es posible, ¿hay algún ejemplo o alguna fuente que pueda encontrar?

Lo intenté con un ejemplo simple pero terminó con un error expecting number but found string "Bob"

var val = "Bob"
console.log(sprintf('The %x ran around the tree', val)); 

No estoy seguro de si lo estoy haciendo bien, cualquier ayuda sería genial.

Gracias de antemano

    
pregunta Ekin 28.10.2015 - 09:43
fuente

1 respuesta

1

No, esto no es posible en Node.js, ya que sprintf es una utilidad de formato de cadena básica. Ahora está integrado en el lenguaje como util.format .

Según la documentación , esta función solo admite el formato básico como %s %d y %j . No hay manera de recuperar un valor de puntero utilizando %p , formatearlo en hexadecimal usando %x o generar el número de caracteres usando %n , que es donde está la vulnerabilidad en C. C documentación sobre las opciones de formato aquí .

C es un idioma nativo, por lo que es posible provocar un desbordamiento del búfer utilizando el formato de cadena. Sin embargo, Node.js es un lenguaje administrado y no es posible controlar directamente los registros, por lo que aquí no obtendrá el mismo tipo de vulnerabilidad.

Consulte aquí para ver algunos ejemplos de explotaciones de cadenas de formato.

    
respondido por el SilverlightFox 28.10.2015 - 10:38
fuente

Lea otras preguntas en las etiquetas