Volver a Labs
Debilidad (CWE)

CWE-170

Terminación nula incorrecta

Acerca de

El producto no termina o termina incorrectamente una cadena o arreglo con un carácter nulo o terminador equivalente.

Los errores de terminación nula ocurren con frecuencia de dos maneras distintas. Un error de desfase por uno (off-by-one) podría hacer que se escriba un nulo fuera de los límites, lo que provoca un desbordamiento. O bien, un programa podría usar incorrectamente una llamada a la función strncpy(), lo que impide que se agregue un terminador nulo por completo. Son posibles otros escenarios.

Consecuencias comunes

  • Confidencialidad, Integridad, Disponibilidad → Lectura de memoria, Ejecución de código o comandos no autorizados
  • Confidencialidad, Integridad, Disponibilidad → DoS: bloqueo, salida o reinicio, Lectura de memoria, DoS: consumo de recursos (CPU), DoS: consumo de recursos (memoria)
  • Integridad, Disponibilidad → Modificación de memoria, DoS: bloqueo, salida o reinicio
  • Integridad, Confidencialidad, Disponibilidad, Control de acceso, Otro → Alteración de la lógica de ejecución, Ejecución de código o comandos no autorizados

Mitigaciones

  • Requisitos: Utilice un lenguaje que no sea susceptible a estos problemas. Sin embargo, tenga cuidado con los errores de interacción de bytes nulos (CWE-626) con construcciones de más bajo nivel que puedan estar escritas en un lenguaje que sí sea susceptible.
  • Implementación: Asegúrese de comprender plenamente cómo todas las funciones de cadena utilizadas agregan caracteres nulos. Además, tenga cuidado con los errores de desfase por uno (off-by-one) al agregar nulos al final de las cadenas.
  • Implementación: Si las restricciones de rendimiento lo permiten, se puede agregar código especial que valide la terminación nula de los búferes de cadena; esta es una solución bastante ingenua y propensa a errores.
  • Implementación: Cambie a funciones de manipulación de cadenas con límites. Inspeccione las longitudes de los búferes involucrados en la traza de desbordamiento de búfer reportada con el defecto.
  • Implementación: Agregue código que rellene los búferes con nulos (sin embargo, aún es necesario inspeccionar la longitud de los búferes, para garantizar que la cadena no terminada en nulo no se escriba en el extremo físico del búfer).

CVEs con esta debilidad

Preguntas frecuentes

¿Qué es CWE-170?

El producto no termina o termina incorrectamente una cadena o arreglo con un carácter nulo o terminador equivalente. Los errores de terminación nula ocurren con frecuencia de dos maneras distintas. Un error de desfase por uno (off-by-one) podría hacer que se escriba un nulo fuera de los límites, lo que provoca un desbordamiento.

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

MITRE califica la probabilidad de explotación de CWE-170 como medium.

¿Qué plataformas afecta CWE-170?

CWE-170 se ha observado en: C, C++.

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

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