¿La función de desempaquetar de Perl tiene vulnerabilidades de formato?

1

Estoy utilizando Perl por primera vez para el software de producción y tengo algunos problemas de confianza con él. Cuando uso la función unpack() , ¿es seguro usar la entrada del usuario en la cadena TEMPLATE ? Estoy usando un TEMPLATE como "Z$user_controlled" para leer un valor de cadena a una variable. La constante $user_controlled se define como fuente externa que el usuario puede controlar. ¿Estoy tomando un riesgo? ¿Puede un atacante hacer algo malo si convierte la cadena TEMPLATE en algo extraño?

EDITAR: Se modificó la redacción para que sea más genérica.

    
pregunta Juha Kivekäs 10.07.2015 - 08:12
fuente

1 respuesta

1

El parámetro de la plantilla "p" interpretará su parte de la cadena de entrada como una dirección de memoria (disponible para el proceso del intérprete de Perl), y copiará todos los caracteres de esa dirección, hasta el siguiente carácter nulo, en la cadena devuelta. Esto también podría causar una violación de segfault / access si la memoria en esta dirección no es legible.

El parámetro de la plantilla "P" es similar, pero la longitud de la cadena copiada es fija y se proporciona en la plantilla.

Estos parámetros existen para permitir el acceso a los datos fuera de la cadena de entrada, por lo que probablemente deberías verificar cómo podrían abusarse de ellos en tu plataforma.

    
respondido por el Christopher Oicles 13.07.2015 - 21:04
fuente

Lea otras preguntas en las etiquetas