¿Es nc -l no explotable?

1

Supongamos que quiero configurar un servidor como una prueba y quiero que esté expuesto a Internet, dando acceso a cualquier IP. Podría ser por cualquier motivo o sin motivo.

No quiero que corra el riesgo de un desbordamiento de búfer y la ejecución de código arbitrario en mi máquina.

nc -l está bien. El servidor no necesita hacer nada. Podría hacerse dentro de cygwin.

¿Qué tan seguro es eso?

Y si no es seguro, ¿hay algo más seguro?

    
pregunta barlop 29.04.2014 - 22:39
fuente

1 respuesta

7

Netcat no parece tener muchos errores, como desbordamientos de búfer. Aparentemente, tuvo uno de estos errores, pero muy pequeño: si lo invocó como cliente con un número de puerto más allá de 999999 (lo cual no tiene sentido, ya que los números de puerto válidos están en el 0..65535 rango), entonces usted podría obtener un desbordamiento de búfer que lleva a una caída; el informe de errores está allí .

Sin embargo, aparentemente hay más de un comando nc alrededor. En mi servidor, que ejecuta un Ubuntu bastante estándar (13.10 actualmente), el paquete nc proporciona el comando netcat-openbsd . Al parecer:

  • La gente de OpenBSD decidió poner un comando nc en su sistema base, y reescribió la utilidad completa por varias razones, la oficial es "soporte de IPv6" (esa es una razón válida, pero sospecho que hay un caso) de síndrome de NIH también).

  • La gente de Debian luego extrajo el código de OpenBSD para empaquetarlo como un paquete de Debian (que también encontró su camino a Ubuntu, ya que Ubuntu se alimenta de los paquetes de Debian), y luego procedió a revisar el código por razones que son un tanto explicado en este archivo . En particular, afirman que "el código se ha limpiado de forma masiva y se ha agregado una funcionalidad importante". También eliminaron las llamadas a strlcpy() , una función no estándar que a la gente de OpenBSD le gusta mucho, pero que no es parte de la biblioteca GNU que utilizan los sistemas Debian.

Por lo tanto, si una versión específica tiene un desbordamiento de búfer es un juego aleatorio. Esta es una utilidad bastante simple; Si algún software puede estar razonablemente libre de errores, entonces debe ser netcat. Sospecho que si alguna vez se encuentra un desbordamiento de búfer en la implementación de netcat de OpenBSD, algunos desarrolladores de OpenBSD cometerían un seppuku honorable.

Sin embargo , puede haber otros problemas de seguridad además de los desbordamientos de búfer. El principal problema potencial que veo aquí es que su nc -l se ejecutará en algún tipo de consola de texto o terminal, y generará los bytes a medida que se reciben . Por lo tanto, algún tipo malo podría enviar secuencias de control que serán interpretadas por su terminal. Este problema se explora en detalle en esta pregunta .

Si ejecuta nc -l con la salida redirigida a un archivo, ese problema se evitará, siempre que tenga cuidado de leer el archivo con alguna herramienta que filtre las secuencias de escape, por ejemplo. un editor de texto.

    
respondido por el Thomas Pornin 29.04.2014 - 23:43
fuente

Lea otras preguntas en las etiquetas