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

Vulnerabilidad en GitHub, Inc. (CVE-2024-48924)

Gravedad CVSS v4.0:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
17/10/2024
Última modificación:
18/10/2024

Descripción

### Impacto Cuando esta librería se utiliza para deserializar datos de un paquete de mensajes de una fuente no confiable, existe el riesgo de un ataque de denegación de servicio por parte de un atacante que envía datos diseñados para producir colisiones de hash, lo que lleva a un gran consumo de CPU desproporcionado al tamaño de los datos que se deserializan. Esto es similar a [un aviso anterior](https://github.com/MessagePack-CSharp/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf), que proporcionó una solución inadecuada para la parte de colisión de hash de la vulnerabilidad. ### Parches Se requieren los siguientes pasos para mitigar este riesgo. 1. Actualice a una versión de la librería donde haya una solución disponible. 1. Revise los pasos en [este aviso anterior](https://github.com/MessagePack-CSharp/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf) para asegurarse de que su aplicación esté configurada para datos no confiables. ### workarounds Si actualizar MessagePack a una versión parcheada no es una opción para usted, puede aplicar un workaround manual de la siguiente manera: 1. Declare una clase que derive de `MessagePackSecurity`. 2. Anule el método `GetHashCollisionResistantEqualityComparer` para proporcionar una función hash resistente a colisiones propia y evitar llamar a `base.GetHashCollisionResistantEqualityComparer()`. 3. Configure `MessagePackSerializerOptions` con una instancia de su tipo derivado llamando a `WithSecurity` en un objeto de opciones existente. 4. Utilice su objeto de opciones personalizado para todas las operaciones de deserialización. Esto puede hacerse configurando la propiedad estática `MessagePackSerializer.DefaultOptions`, si llama a métodos que dependen de esta propiedad predeterminada, y/o pasando el objeto de opciones explícitamente a cualquier método `Deserialize`. ### Referencias: Obtenga más información sobre las mejores prácticas de seguridad al leer datos no confiables con [MessagePack 1.x](https://github.com/MessagePack-CSharp/MessagePack-CSharp/tree/v1.x#security) o [MessagePack 2.x](https://github.com/MessagePack-CSharp/MessagePack-CSharp#security). - El equipo .NET [discusión sobre las vulnerabilidades de colisión de hash de su estructura `HashCode`](https://github.com/GrabYourPitchforks/runtime/blob/threat_models/docs/design/security/System.HashCode.md). ### Para obtener más información Si tiene alguna pregunta o comentario sobre este aviso: * [Inicie una discusión pública](https://github.com/MessagePack-CSharp/MessagePack-CSharp/discussions) * [Envíenos un correo electrónico privado](mailto:andrewarnott@live.com)