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.
Impacto
Puntuación base 3.x
7.50
Gravedad 3.x
ALTA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:a:protocol:go-merkledag:*:*:*:*:*:*:*:* | 0.4.0 (incluyendo) | 0.8.1 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://en.wikipedia.org/wiki/Directed_acyclic_graph
- https://github.com/ipfs/go-merkledag/issues/90
- https://github.com/ipfs/go-merkledag/pull/91
- https://github.com/ipfs/go-merkledag/pull/92
- https://github.com/ipfs/go-merkledag/pull/93
- https://github.com/ipfs/go-merkledag/releases/tag/v0.8.0
- https://github.com/ipfs/go-merkledag/releases/tag/v0.8.1
- https://github.com/ipfs/go-merkledag/security/advisories/GHSA-x39j-h85h-3f46
- https://github.com/ipfs/kubo/issues/9297