diferencia entre vulnerabilidades en windows / linux / mac para el mismo programa

3

Si alguien encuentra una vulnerabilidad como desbordamiento de búfer en un programa como Google Chrome o Mozilla Firefox ejecutándose en una máquina Linux, hay alguna posibilidad de que esta vulnerabilidad persista en Mac OS X o Windows ejecutando el mismo programa.

    
pregunta abracadabra 02.01.2012 - 23:37
fuente

2 respuestas

2

Sí, sin duda todas las plataformas se verán afectadas. La vulnerabilidad de las vulnerabilidades de corrupción de memoria será muy diferente según el sistema operativo. Cada plataforma tendrá su propia Cadena ROP u otro método para controlar el flujo de ejecución.

Vulnerabilidades como Directory Traversal, SQL Injection, XSS, code eval (), etc. seguramente tendrán un exploit idéntico independientemente del sistema operativo. En el contexto de los navegadores web, las violaciones en la Política del mismo origen, la separación de contenido y algunas vulnerabilidades de divulgación de información probablemente tendrán una vulnerabilidad idéntica.

Por ejemplo, aquí hay un vulnerabilidad de divulgación de información que afecta a todos los navegadores WebKit independientemente de la plataforma. Donde como este vulnerabilidad de corrupción de memoria para WebKit es una condición DoS en todas las plataformas, pero los medios para obtener el código La ejecución es muy específica de la plataforma.

    
respondido por el rook 03.01.2012 - 01:11
fuente
5

Los desbordamientos de búfer podrían ser específicos de una arquitectura de destino determinada; En PC y máquinas similares a PC, es posible que exista un desbordamiento de búfer en modo de 32 bits y no en modo de 64 bits, y viceversa. Un desbordamiento de búfer es un error de programación: el programa intenta hacer algo que no es posible (escribir más datos de los que posiblemente caben en un búfer), y ciertamente no está previsto por el programador. El tamaño del búfer y los datos que pueden intentarse escribir en él pueden depender de las características de la plataforma y, por lo tanto, de la posible dependencia. Algunos desbordamientos de búfer realmente ocurren en las bibliotecas del sistema que son mal utilizadas por la aplicación, en cuyo caso el problema puede ser específico para un sistema operativo dado y no se extiende a otro sistema operativo donde se pueda ejecutar la aplicación "misma".

Sin embargo, un error sigue siendo un error: el hecho de que no se pueda demostrar en una arquitectura determinada solo significa que la suerte del programador solo superó localmente su descuido. Además, independientemente de los puntos anteriores, la mayoría de los desbordamientos de búfer son neutrales para el sistema: se producen en todos los sistemas y arquitecturas donde se compila el código infractor.

Las cosas no están tan claras para todo tipo de vulnerabilidades. Por ejemplo, las aplicaciones en sistemas similares a Unix (esto incluye Linux y MacOS, pero no Windows) a menudo necesitan crear archivos temporales en el directorio /tmp , y la creación a menudo se puede subvertir a un acceso de escritura en cualquier lugar, con un enlace simbólico. asumiendo que el atacante puede ejecutar código en la misma máquina (con un nombre de usuario diferente) y puede predecir el nombre del archivo temporal. Si no se usa un nombre aleatorio impredecible para el archivo temporal, es una vulnerabilidad que las aplicaciones pueden tener en MacOS, pero que no aparece en Windows. Esto es solo un ejemplo; No quiero sugerir que MacOS o Linux son menos seguros (o, en realidad, tampoco son más seguros) que Windows.

Todavía es una apuesta justa que la mayoría de las vulnerabilidades encontradas en los navegadores web persistirán en todos los sistemas operativos. Los navegadores web son cada vez más autocontenidos, y realmente parecen sistemas operativos dentro del sistema operativo, por lo que sus vulnerabilidades tienden a ser propias, bastante independientes del sistema operativo externo.

Por otra parte, la explotación de las vulnerabilidades, es decir, convertir el error en ejecución de código arbitrario o similar, puede ser muy dependiente del sistema. Algunos sistemas operativos emplean varias técnicas para dificultar la vida del atacante, como aleatorización del diseño del espacio de direcciones o non-executable stacks . El desbordamiento de búfer (si la vulnerabilidad es un desbordamiento de búfer) aún está allí, pero la facilidad para escalarlo en un ataque exitoso puede variar mucho para la misma aplicación, no solo entre sistemas operativos, sino también entre versiones o incluso opciones de configuración de un determinado OS No hay una regla general confiable, excepto que las vulnerabilidades deben ser rastreadas y eliminadas siempre que sea posible.

    
respondido por el Thomas Pornin 03.01.2012 - 02:29
fuente

Lea otras preguntas en las etiquetas