¿Por qué siempre es posible descubrir y explotar nuevas vulnerabilidades de día cero? [cerrado]

0

¿No podría un servidor / computadora actualizado estar completamente sellado contra ataques? ¿Por qué no puedes bloquear cualquier solicitud entrante para ejecutar algo en tu servidor?

Por ejemplo, en mi vista ingenua, un servidor de correo podría estar recibiendo correos electrónicos (archivos de texto) enviando correos electrónicos, pero nunca permitiendo que nada que ingrese al servidor ejecute nada. ¿Qué podría romper esto?

Pero, ¿cómo proceden los hackers para encontrar y utilizar una vulnerabilidad?

    
pregunta james preston 02.12.2013 - 02:24
fuente

2 respuestas

3

Mientras el software esté escrito por personas, que son inherentemente imperfectas y pueden cometer errores, habrá errores en el código que pueden ser explotados.

Los servidores deben exponerse al mundo exterior para proporcionar sus servicios, que definitivamente son proporcionados por software escrito por personas instaladas en el servidor. Para las computadoras cliente, necesitan ejecutar un software que les permita ser útiles para sus propietarios, como el software de procesamiento de textos, que aún está escrito por personas.

En ese ejemplo del que escribes, un atacante puede atacar el servicio de correo electrónico expuesto por el servidor. Luego, unos pocos días cero para el escape de sandbox / chroot, la escalada de privilegios y, de repente, el atacante tiene una raíz en el servidor.

Ninguna cantidad de mitigación detendrá a un atacante determinado con casi un número ilimitado de recursos para comprometer un sistema; es una cuestión de gestión de riesgos, como el tipo de atacantes contra los que pretende protegerse determina qué tipo de medidas toma.

    
respondido por el Nasrus 02.12.2013 - 03:37
fuente
0

Un servidor que no hace nada no es un servidor útil. Es posible que un archivo de texto no sea ejecutable por sí mismo, sin embargo, en general, el procesamiento debe realizarse en él. Las vulnerabilidades de día cero por lo general no son problemas con la funcionalidad normal del programa, sino que explotan algún error de programación poco claro, como el hecho de que la funcionalidad se haya pirateado cuando se envía una entrada mal formada.

En el ejemplo de su servidor de correo, tal vez haya un filtro de correo no deseado que lo analice y, si coloca un poco de correo electrónico, causa un error en el comportamiento del filtro de correo no deseado. O tal vez cuando le envía una solicitud SMTP con formato incorrecto, puede hacer que ejecute un código arbitrario que usted ingresó en su solicitud SMTP con formato incorrecto. Los correos electrónicos en sí pueden ser de texto, pero ese texto se debe utilizar en algún momento. Los protocolos para manejar el intercambio de esos mensajes también tienen que hacer ejecuciones más avanzadas y necesitan escribir y leer información del disco.

Una posible vulnerabilidad de día cero podría estar presente en cualquier parte del proceso y dado que los desarrolladores no son perfectos, cualquier parte de ella podría tener un problema. La única manera de que una computadora esté perfectamente segura (para el mundo exterior) es no tener que responder al mundo exterior en absoluto. Si expone cualquier tipo de funcionalidad interactiva, es posible que un error en esa funcionalidad pueda permitir que se ejecuten comandos arbitrarios al proporcionarle una entrada que sobrescribe la memoria con una llamada al código que se incluye con la entrada.

Esto se denomina desbordamiento de búfer, y aunque no es el único tipo de vulnerabilidad de día cero, es bastante común. En la memoria, no hay ninguna diferencia entre los datos y las instrucciones del programa. Las cosas que se llaman punteros le dicen a la computadora dónde ir para buscar datos o su próxima instrucción. Si puede incluir instrucciones como datos y luego modificar un puntero para indicar al código del programa que ejecute el código que ingresó en la porción de datos, pensará que está siguiendo el programa en lugar de ejecutarse en los datos. Hay algunas medidas técnicas que hacen que esto sea un poco más difícil de hacer, pero esa es la idea básica y realmente no hay una manera perfecta de detenerlo.

    
respondido por el AJ Henderson 02.12.2013 - 15:35
fuente

Lea otras preguntas en las etiquetas