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

Vulnerabilidad en "tf.raw_ops.SparseCountSparseOutput" en TensorFlow (CVE-2021-29521)

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
14/05/2021
Última modificación:
20/05/2021

Descripción

TensorFlow es una plataforma de código abierto de extremo a extremo para el aprendizaje automático. Especificar una forma densa negativa en "tf.raw_ops.SparseCountSparseOutput" resulta en un error de segmentación que es eliminado de la biblioteca estándar ya que los invariantes "std::vector" son rotos. Esto es debido a que la implementación (https://github.com/tensorflow/tensorflow/blob/8f7b60ee8c0206a2c99802e3a4d1bb55d2bc0624/tensorflow/core/kernels/count_ops.cc#L199-L213) asume que el primer elemento de la forma densa es siempre positivo y lo usa para inicializar un "BatchedMap(T)" (es decir, "std::vector (absl::flat_hash_map(int64, T))" (https://github.com/tensorflow/tensorflow/blob/8f7b60ee8c0206a2c99802e3a4d1bb55d2bc0624/tensorflow/core/kernels/count_ops.cc#L27)) estructura de datos. Si el tensor de "shape" presenta más de un elemento,"num_batches" es el primer valor en "shape". Asegurarse de que el argumento "dense_shape" sea una forma de tensor válida (es decir, que todos los elementos no sean negativos) resuelve este problema. La corrección será incluida en TensorFlow versión 2.5.0. También seleccionaremos este commit en TensorFlow versión 2.4.2 y TensorFlow versión 2.3.3

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:* 2.3.0 (incluyendo) 2.3.3 (excluyendo)
cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:* 2.4.0 (incluyendo) 2.4.2 (excluyendo)