¿Hay un nombre común para un defecto de software que lleva a una transferencia inesperada de secretos a través del cable?

5

Supongamos que en un programa C ++ utilizo una región de memoria para almacenar temporalmente una clave de cifrado y luego no sobrescribo esa región. Entonces mi programa quiere enviar un paquete de datos a través de la red.

Debido a un error en el código, no solo lee el paquete de datos preparado, sino también una región de memoria adyacente, y esta última es la misma que la región que se usó anteriormente para la clave. Entonces, aunque el programa nunca planeó hacerlo, transfiere el secreto por cable.

¿Existe un nombre común para este tipo de defectos de software?

    
pregunta sharptooth 10.08.2011 - 12:32
fuente

3 respuestas

5

El tipo que describiste es de hecho un error de saturación del búfer , como lo describe @Thomas Pornin.

Hay otra clase de vulnerabilidad relacionada, que se enmarca en uso de datos sin inicializar . Esto puede ocurrir si el código se lee desde una ubicación de memoria que no se inicializa y luego envía el valor que se lee a través de la red. Si no tiene suerte, y esa ubicación de memoria contenía previamente una clave criptográfica u otro secreto, tal error puede revelar secretos. Estos son algunos ejemplos de este tipo de vulnerabilidad en varios paquetes de software: en OpenSSH , in Kerberos , y en los controladores del kernel de Linux . Consulte también CWE-665: Inicialización incorrecta para obtener una vista más amplia.

Todos estos caen dentro de la categoría general de errores de divulgación de información .

    
respondido por el D.W. 11.08.2011 - 00:16
fuente
6

Este error es un desbordamiento de búfer , el tipo de "lectura". Un desbordamiento de búfer es cuando algún código usa un búfer (una secuencia de elementos en la memoria) y accede a elementos más allá de los límites del búfer (por lo general, se denomina "desbordamiento" cuando el acceso pasa el último elemento y "subdesbordamiento" cuando es antes del primer elemento).

Tradicionalmente, los desbordamientos de búfer que conducen a los mayores agujeros de seguridad son aquellos donde los datos se escriben más allá del final del búfer, ya que permite que un atacante altere el comportamiento del software atacado, hasta un Incluyendo el lanzamiento de un shell. Sin embargo, leer los accesos más allá del extremo del búfer pueden ser un problema de seguridad importante, como muestra su ejemplo: puede provocar una fuga de datos confidenciales (una clave de cifrado es simplemente los datos confidenciales arquetípicos).

No he encontrado ningún término específico para la situación en la que el búfer desborda los datos confidenciales, lo que resulta ser una clave de cifrado. La mayoría de las presentaciones pedagógicas de ese problema utilizan el "número de tarjeta de crédito" como un ejemplo sorprendente de por qué la filtración de datos es mala.

    
respondido por el Thomas Pornin 10.08.2011 - 13:57
fuente
5

Lo que estás describiendo se ha denominado "fuga de datos", con el ejemplo clásico como EtherLeak encontrada por @stake en 2003. Esa fuga ocurrió a nivel del sistema operativo, pero supongo que un programa en C ++ que tampoco pudo eliminar los buffers que estaba usando en las comunicaciones de la red caería en la misma categoría.

    
respondido por el gowenfawr 10.08.2011 - 15:09
fuente

Lea otras preguntas en las etiquetas