Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en el código Go en la cadena "C.TF_TString_Dealloc" en la recolección de basura en una función finalizer en TensorFlow (CVE-2021-37692)

Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-20 Validación incorrecta de entrada
Fecha de publicación:
12/08/2021
Última modificación:
31/08/2021

Descripción

TensorFlow es una plataforma de código abierto de extremo a extremo para el aprendizaje automático. En las versiones afectadas bajo determinadas condiciones, el código Go puede desencadenar un error de segmentación en la desasignación de cadenas. Para tensores de cadena, se llama a "C.TF_TString_Dealloc" durante la recolección de basura dentro de una función finalizer. Sin embargo, la estructura del tensor no es comprobada hasta la codificación para impedir que se lleve a cabo una penalización del rendimiento. El método actual para dealloc asume que la codificación tuvo éxito, pero segfaults cuando se recolecta basura un tensor de cadena cuya codificación falló (por ejemplo, debido a dimensiones no coincidentes). Para solucionar este problema, la llamada para establecer la función finalizer se aplaza hasta que regrese "NewTensor" y, si la codificación presenta un fallo para un tensor de cadena, las deslocalizaciones se determinan en función de los bytes escritos. Hemos solucionado el problema en GitHub commit 8721ba96e5760c229217b594f6d2ba332beedf22. La corrección será incluida en TensorFlow versión 2.6.0. También seleccionaremos este commit en TensorFlow versión 2.5.1, que es la otra versión afectada.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:* 2.5.0 (incluyendo) 2.6.0 (excluyendo)