Volver a Labs
Debilidad (CWE)

CWE-787

Escritura fuera de los límites

Acerca de

El producto escribe datos más allá del final, o antes del inicio, del búfer previsto.

Consecuencias comunes

  • Integridad → Modificar memoria, Ejecutar código o comandos no autorizados
  • Disponibilidad → DoS: Caída, salida o reinicio
  • Otro → Estado inesperado

Mitigaciones

  • Requisitos: Utilice un lenguaje que no permita que ocurra esta debilidad o que proporcione construcciones que faciliten evitarla. Por ejemplo, muchos lenguajes que gestionan su propia memoria, como Java y Perl, no están sujetos a desbordamientos de búfer. Otros lenguajes, como Ada y C#, normalmente proporcionan protección contra desbordamientos, pero el programador puede deshabilitarla. Tenga en c
  • Arquitectura y diseño: Utilice una biblioteca o marco de trabajo verificado que no permita que ocurra esta debilidad o que proporcione construcciones que faciliten evitarla. Algunos 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 cade
  • 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 compiladores. Algunos ejemplos incluyen: la bandera /GS de Microsoft Visual Studio, la bandera FORTIFY_SOURCE de GCC de Fedora/Red Hat, StackGuard y ProPolice, que proporcionan diversos mecanismos, incluida la detección basada en canarios y
  • Implementación: Considere seguir las siguientes reglas al asignar y gestionar la memoria de una aplicación: - Verifique dos veces que el búfer sea tan grande como se especifica. - Al usar funciones que aceptan una cantidad de bytes a 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 la cadena no termine en NULL. - V
  • Operación, Compilación y construcción: Ejecute o compile el software utilizando características o extensiones que dispongan aleatoriamente las posiciones del ejecutable y las bibliotecas de un programa en memoria. Dado que esto hace que las direcciones sean impredecibles, puede impedir que un atacante salte de forma fiable a código explotable. Algunos ejemplos incluyen la Aleatorización del Diseño
  • Operación: Utilice una CPU y un sistema operativo que ofrezcan Protección de Ejecución de Datos (usando los bits NX o XD del hardware) o técnicas equivalentes que simulen esta característica por software, como PaX [REF-60] [REF-61]. Estas técnicas garantizan que cualquier instrucción ejecutada esté exclusivamente en una dirección de memoria que forme parte del segmento de código. Para obtener más

CVEs con esta debilidad

Preguntas frecuentes

¿Qué es CWE-787?

El producto escribe datos más allá del final, o antes del inicio, del búfer previsto. Consecuencias comunes Integridad → Modificar memoria, Ejecutar código o comandos no autorizados Disponibilidad → DoS: Caída, salida o reinicio Otro → Estado inesperado Mitigaciones Requisitos: Utilice un lenguaje que no permita que ocurra esta debilidad o que proporcione construcciones que faciliten evitarla.

¿Qué probabilidad hay de que CWE-787 sea explotada?

MITRE califica la probabilidad de explotación de CWE-787 como high.

¿Qué plataformas afecta CWE-787?

CWE-787 se ha observado en: Memory-Unsafe, C, C++, Assembly, ICS/OT.

¿Cuántas CVE rastrea Rainforest para CWE-787?

Rainforest Labs rastrea actualmente 7 CVE publicadas asociadas a CWE-787. 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.