CWE-120
Copia de búfer sin verificar el tamaño de la entrada ('Classic Buffer Overflow')
Acerca de
El producto copia un búfer de entrada a un búfer de salida sin verificar que el tamaño del búfer de entrada sea menor que el tamaño del búfer de salida.
Consecuencias comunes
- Integridad, Confidencialidad, Disponibilidad → Modificación de memoria, Ejecución de código o comandos no autorizados
- Disponibilidad → Modificación de memoria, DoS: bloqueo, salida o reinicio, DoS: consumo de recursos (CPU)
Mitigaciones
- Requisitos: Utilice un lenguaje que no permita que esta debilidad ocurra o que proporcione construcciones que faciliten evitarla. Por ejemplo, muchos lenguajes que realizan su propia gestión de memoria, como Java y Perl, no están sujetos a los desbordamientos de búfer. Otros lenguajes, como Ada y C#, suelen proporcionar protección contra desbordamientos, pero el programador puede deshabilitar dich
- Arquitectura y diseño: Utilice una biblioteca o marco de trabajo verificado que no permita que esta debilidad ocurra o que proporcione construcciones que faciliten evitarla. Los ejemplos incluyen la Safe C String Library (SafeStr) de Messier y Viega [REF-57], y la biblioteca Strsafe.h de Microsoft [REF-56]. Estas bibliotecas proporcionan versiones más seguras de las funciones de manejo de cadenas
- Operación, Compilación y construcción: Utilice mecanismos automáticos de detección de desbordamiento de búfer que ofrecen ciertos compiladores o extensiones de compilador. Algunos ejemplos son: el indicador /GS de Microsoft Visual Studio, el indicador FORTIFY_SOURCE de GCC de Fedora/Red Hat, StackGuard y ProPolice, que proporcionan diversos mecanismos, incluida la detección basada en canarios y la
- Implementación: Considere adherirse a las siguientes reglas al asignar y gestionar la memoria de una aplicación: - Verifique dos veces que su búfer sea tan grande como usted especifica. - Al usar funciones que aceptan un número de bytes para copiar, como strncpy(), tenga en cuenta que si el tamaño del búfer de destino es igual al tamaño del búfer de origen, es posible que no termine la cadena con
- Implementación: Suponga que toda entrada es maliciosa. Utilice una estrategia de validación de entradas de tipo "aceptar lo que se sabe que es válido", es decir, use una lista de entradas aceptables que se ajusten estrictamente a las especificaciones. Rechace cualquier entrada que no se ajuste estrictamente a las especificaciones, o transfórmela en algo que sí lo haga. Al realizar la validación de
- Arquitectura y diseño: Para cualquier verificación de seguridad que se realice en el lado del cliente, asegúrese de que estas verificaciones se dupliquen en el lado del servidor, a fin de evitar CWE-602. Los atacantes pueden eludir las verificaciones del lado del cliente modificando los valores después de que se hayan realizado las verificaciones, o cambiando el cliente para eliminar por completo
CVEs con esta debilidad
Preguntas frecuentes
¿Qué es CWE-120?
El producto copia un búfer de entrada a un búfer de salida sin verificar que el tamaño del búfer de entrada sea menor que el tamaño del búfer de salida.
¿Qué probabilidad hay de que CWE-120 sea explotada?
MITRE califica la probabilidad de explotación de CWE-120 como high.
¿Qué plataformas afecta CWE-120?
CWE-120 se ha observado en: Memory-Unsafe, C, C++, Assembly.
¿Cuántas CVE rastrea Rainforest para CWE-120?
Rainforest Labs rastrea actualmente 4 CVE publicadas asociadas a CWE-120. Están listadas en esta página.
Potencia tu estrategia de seguridad con Rainforest
Descubre vulnerabilidades a tiempo, prioriza amenazas críticas y protege lo que realmente importa. Rainforest simplifica tus operaciones de seguridad, ahorrando tiempo y reduciendo costos, para que te enfoques en lo que impulsa tu negocio.
