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

Vulnerabilidad en go-merkledag (CVE-2022-23495)

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
08/12/2022
Última modificación:
07/11/2023

Descripción

go-merkledag implementa la interfaz 'DAGService' y agrega dos tipos de nodos ipld, Protobuf y Raw para el proyecto ipfs. Un `ProtoNode` puede modificarse de tal manera que cause varios errores de codificación que provocarán pánico en llamadas a métodos comunes que no permiten devoluciones de errores. Un `ProtoNode` solo debería poder codificar en DAG-PB válido; intentar codificar formularios DAG-PB no válidos generará un error en el códec. La manipulación de un "ProtoNodo" existente (recién creado o decodificado) utilizando los métodos modificadores no tuvo en cuenta ciertos estados que colocarían el "ProtoNodo" en una forma no codificable. Debido a la conformidad con [`github.com/ipfs/go-block-format#Block`](https://pkg.go.dev/github.com/ipfs/go-block-format#Block) y [` github.com/ipfs/go-ipld-format#Node`](https://pkg.go.dev/github.com/ipfs/go-ipld-format#Node) interfaces, ciertos métodos, que internamente requieren una re-encode si el estado ha cambiado, entrará en pánico debido a la imposibilidad de devolver un error. Este problema se ha solucionado en varias solicitudes de extracción. Se recomienda a los usuarios que actualicen a la versión 0.8.1 para obtener un conjunto completo de correcciones. Los usuarios que no puedan actualizar pueden intentar mitigar este problema desinfectando las entradas cuando permiten que las entradas del usuario establezcan un nuevo `CidBuilder` en un `ProtoNode` y sanitizando los valores de `Tsize` (`Link#Size`) de modo que sean razonables. El tamaño de bytes para sub-DAG se deriva de la entrada del usuario.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:protocol:go-merkledag:*:*:*:*:*:*:*:* 0.4.0 (incluyendo) 0.8.1 (excluyendo)