Desbordamiento del buffer de memoria
- Área: Codificación y Validación de entrada/salida
- Tipo de pauta: Directriz
- Carácter de la pauta: Obligatoria
Controlar que no se produzcan desbordamientos del buffer de memoria
Los desbordamientos del buffer de memoria siguen siendo uno de los puntos débiles más peligrosos y más comunes en aplicaciones que utilizan gestión manual de memoria.
Los intentos de explotación este tipo de vulnerabilidad pueden dar lugar a problemas como el bloqueo de la aplicación o que un atacante inserte y ejecute código malintencionado en el proceso de la aplicación.
Los desbordamientos de memoria también se encuentran en el código de las aplicaciones hechas a medida, debido a la falta de control por las que pasan estas.
Pautas
Título | Carácter |
---|---|
Gestión directa de memoria | Recomendada |
Valores límite de entrada | Obligatoria |
Valores límite de salida | Obligatoria |
Formato de salida | Obligatoria |
Gestión directa de memoria
Minimizar el uso de mecanismos que gestionen la memoria de forma directa
Evitar el uso de mecanismos que permitan la gestión manual de la memoria, ya que facilitan que se cometan errores en el manejo de la misma y, por tanto, que se produzcan desbordamientos de memoria.
Por ejemplo, el uso del lenguaje C o C++, donde se permite el uso de punteros a memoria, habría que dejarlo sólo para cierto tipo de sistemas de alto rendimiento, donde se necesite programar a bajo nivel la gestión de la memoria.
Valores límite de entrada
Controlar el tamaño de las entradas
Controlar que los datos introducidos están dentro del rango de valores adecuados si son de tipo numérico y que no sobrepasan la longitud esperada en el caso de ser de tipo cadena.
Este control debe realizarse tanto en el lado del cliente como en el servidor ya que las validaciones en el cliente son vulnerables.
Valores límite de salida
Controlar la salida de los métodos
Controlar que el dato resultante de una operación está dentro del rango de valores permitidos para ese tipo de dato antes de asignarlo.
Formato de salida
No usar funciones que permitan cambiar el formato de los datos de salida
No usar funciones que permitan cambiar el formato de los datos de salida, ya que pueden provocar errores en el buffer.
Contenidos relacionados
Código | Título | Tipo | Carácter |
---|---|---|---|
RECU-0614 | Validación de los datos de entrada en PHP | Ejemplo | Obligatorio |