¿Se pueden detener los desbordamientos de búfer en los sitios web?

1

Recientemente, estaba en la librería revisando libros en computadoras. Encontré un libro interesante sobre varios tipos de hacks y cómo detenerlos en sus servidores.

Uno que llamó mi atención fue el "desbordamiento de búfer". Básicamente, fue un pirata informático que eliminó el límite en un cuadro de entrada, escribió galimatías aleatorias en la entrada y luego lo envió al servidor.

El servidor obtendría un desbordamiento de búfer, y lo más probable es que falle.

Lamentablemente, en este libro, no incluía ninguna información sobre cómo detener estos ataques. Y para mí, estos ataques suenan bastante imparables.

Escenario uno:

Soy el propietario de un servidor. En el servidor, hay un sitio web con un foro. En el foro, tengo al usuario enviar información al servidor. El cuadro de entrada NO tiene un límite

¿Cómo podré detener un desbordamiento de búfer, si es posible?

Escenario dos:

Soy el propietario de un servidor. En el servidor, hay un sitio web con un foro. En el foro, tengo al usuario enviar información al servidor. El cuadro de entrada tiene un límite.

¿Cómo podría detener un desbordamiento de búfer?

    
pregunta SirPython 10.12.2014 - 23:43
fuente

2 respuestas

3

La limitación de texto en un formulario HTML realmente no detiene los desbordamientos de búfer porque un mal actor puede editar su HTML o no usarlo en absoluto.

Las vulnerabilidades de desbordamiento de búfer son causadas por errores de programación. Los programas que procesan los datos en el servidor deben, si utilizan buffers de tamaño fijo, contar los caracteres a medida que se almacenan y almacenar solo el número de bytes asignado. Cuando el búfer está lleno, el programa debe asignar más memoria o dejar de aceptar datos.

Para sitios web, esto significa no escribir programas CGI en lenguajes como C a menos que esté absolutamente, positivamente seguro de saber lo que está haciendo, y tal vez ni siquiera entonces.

Si está utilizando un lenguaje de scripting como PHP, el procesador de idioma puede tener fallas de desbordamiento de búfer. Todo lo que puede hacer al respecto es mantener actualizado el PHP, el servidor web ( por ejemplo Apache), etc., y leer los informes de errores. Principalmente en el nivel de programación, uno no está tratando con "buffers" de tamaño fijo en esos idiomas, pero aún así debe verificar las longitudes de entrada como parte o validación de datos normal.

La programación segura requiere que usted no haga suposiciones sobre ningún dato que llegue a su programa desde el exterior. En su lugar debes validar todo. Valide comprobando los valores aceptables, sin intentar "enumerar maldad".

Enumerar la maldad (el término de Marcus Ranum) significa tratar de filtrar las cosas que sabes que son malas. Todo lo que los malos actores tienen que hacer es encontrar alguna maldad en la que no hayas pensado y estás decidido. En su lugar, acepte solo las cosas que sabe que son buenas y rechace el resto. Si por error deja algo fuera de las cosas para aceptar, su programa se interrumpirá y usted lo arreglará. Eso es lejos mejor que tener un sistema comprometido.

    
respondido por el Bob Brown 11.12.2014 - 00:00
fuente
1

La respuesta es la misma para ambos escenarios, debe agregar una validación de longitud para la entrada en el lado del servidor antes de realizar cualquier otra operación con los datos. La lista blanca solo para caracteres seguros (A-Z, a-z, 0-9) también ayuda a evitar ataques que toman ventaja de los desbordamientos de búfer para ejecutar código arbitrario. un enlace para mayor referencia:

enlace

    
respondido por el Kotzu 10.12.2014 - 23:56
fuente

Lea otras preguntas en las etiquetas