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.