Pregunta

Estoy tratando de resolver los problemas de seguridad entre desbordamientos de búfer en Windows vs Unix.

Según tengo entendido, el desbordamiento del búfer de Windows no se puede implementar en Unix porque cada proceso tiene su propio espacio de memoria. ¿Significa esto que los procesos en Windows comparten espacio de memoria?

¿Fue útil?

Solución

El espacio de memoria compartida no es la razón de la mayoría de las vulnerabilidades de desbordamiento del búfer. Windows no tiene memoria compartida desde que Win 3.0 (o Win 3.1 se ejecutó en 80286), por lo que ha pasado mucho tiempo, casi 20 años, desde la última entrega de Windows, que es compatible con el modelo de memoria compartida.

El desbordamiento del búfer permite al atacante cambiar la memoria en el proceso que se está explotando. Al hacer esto, el atacante tiene como objetivo ejecutar una operación del sistema (por ejemplo, iniciar un proceso, cargar una biblioteca dinámica o cambiar los derechos de un determinado usuario, etc.) utilizando el nivel de privilegio de los procesos de destino.

Esto es posible en las plataformas Win *, * nix y muchas otras. Cómo el SO y la aplicación que se está explotando está tratando con este intento, es lo que hace la diferencia. En el lado de la aplicación, la comprobación cuidadosa del tamaño del búfer es lo que generalmente se necesita para evitar esto. Tecnologías como ASLR (asignación aleatoria del diseño del espacio de direcciones, que evita que el atacante adivine la dirección de una función a la que debe llamar para hacer daño) y DEP (prevención de ejecución de datos, que evita que el atacante inyecte código ejecutable en sus áreas de datos), siempre que por el sistema operativo, ayuda tremendamente. En el lado del sistema operativo, no ejecutar aplicaciones como root / administrador es quizás la línea de defensa más importante.

Otros consejos

Tanto los procesos de Windows como Unix tienen aislamiento de memoria. Los ataques de desbordamiento de búfer pueden ocurrir en ambos entornos.

Tal vez debería aclarar lo que quiere decir con " desbordamiento de búfer Hack de Windows " ;. Los desbordamientos de búfer no necesariamente necesitan modificar el código de otros procesos.

Ejemplo: la lectura de cin en una matriz de bytes de tamaño fijo se puede utilizar para ejecutar código personalizado. Si el programa en sí mismo se ejecuta como root, ni Unix ni Windows pueden hacer nada para evitar el hack: el aislamiento de la memoria no ayudará en absoluto.

Como señaló Todd, tanto Windows como Unix son capaces de aislar la memoria (que es algo muy básico en comparación con DEP o ASLR ).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top