Pregunta

¿Es correcto decir que la plataforma .Net es más seguro porque los guardias CLR contra ataques de desbordamiento de búfer?

Suponiendo que no era un navegador web que se ejecuta en un sistema operativo administrado (como Cosmos , sharpos o singularidad ), sería técnicamente posible para un atacante inyectar código IL en la aplicación?

¿Tendría que preocuparse por los ataques que no son posibles en aplicaciones no administradas?

¿Fue útil?

Solución

En su mayor parte, estás en lo correcto. Las aplicaciones con un sistema de tipo de seguridad (no sólo .NET o Java) no permiten la aplicación de violar esas limitaciones.

Los desbordamientos del búfer y muchos otros ataques de código remoto se producen debido a las limitaciones en esos idiomas y tiempos de ejecución proporcionan ningún tipo de verificación y no pueden garantizar que el programa no va a hacer algo así como ejecutar código arbitrario en la memoria. Sistemas seguros verificar el código de estar libre de esos efectos.

(Como nota al margen, C # todavía puede realizar acciones inseguras y erigirse para ejecutar código arbitrario. Es sólo bastante engorroso y poco probable que sea utilizado en una aplicación real.)

Los agujeros de seguridad que se ven en un navegador gestionado serían si se deja de código arbitrario ser cargado, utilizando el CLR como un ambiente seguro. Mientras que el CLR código generado (es decir, la JIT'd de su aplicación) estará a salvo, el cargador y el verificador a sí mismos por lo general están escritos en un lenguaje más baja. Ha habido unos pocos (creo que 2 para .NET?) Agujeros de seguridad en una asamblea formada maliciosamente podría forzar el CLR real para ejecutar código arbitrario. Sin embargo, estos son problemas relativamente raros, y la superficie es mucho menor de lo que sería de otra manera.

Así que, sí, un totalmente seguro, propio navegador gestionado sería no caer presa de los exploits específicos. Pero eso también significa que tendría que han escrito sus plugins y ejecutado de manera similar (Flash?). Por último, hay otros agujeros de seguridad que pueden ser objetivo, pero por lo general van a ser menos grave de lo que iba a encontrar con una aplicación no administrada. cross-site scripting, por ejemplo, seguiría siendo un problema. Pero al menos no tendría que "viendo un documento puede ejecutar código arbitrario" problemas de tipo.

Otros consejos

El CLR (y la JVM) guardia contra una gran cantidad de ataques comunes, pero eso no elimina todas las amenazas. El CLR o cualquier biblioteca pueden contener errores que permiten a los exploits. Errores de aplicación pueden permitir exploits también. inyección SQL es un ejemplo de un ataque que es posible debido a la falta de validación de entrada en la aplicación.

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