Vulnerabilidad en la función de la biblioteca estándar "std::fs::remove_dir_all" en Rust (CVE-2022-21658)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
20/01/2022
Última modificación:
07/11/2023
Descripción
Rust es un lenguaje de programación multiparadigma de propósito general diseñado para el rendimiento y la seguridad, especialmente la concurrencia segura. El Grupo de Trabajo de Respuesta de Seguridad de Rust fue notificado de que la función de la biblioteca estándar "std::fs::remove_dir_all" es vulnerable a una condición de carrera que permite el seguimiento de enlaces simbólicos (CWE-363). Un atacante podría usar este problema de seguridad para engañar a un programa con privilegios para que elimine archivos y directorios a los que el atacante no podría acceder o eliminar de otro modo. Rust versiones 1.0.0 hasta Rust versión 1.58.0 están afectados por esta vulnerabilidad, con la versión 1.58.1 que contiene un parche. Tenga en cuenta que los siguientes objetivos de construcción no presentan APIs usables para mitigar apropiadamente el ataque, y por lo tanto siguen siendo vulnerables incluso con una cadena de herramientas parcheada: macOS versiones anteriores a 10.10 (Yosemite) y REDOX. Recomendamos a todo el mundo que actualice a Rust versión 1.58.1 tan pronto como sea posible, especialmente a las personas que desarrollan programas que esperan que sean ejecutados en contextos privilegiados (incluidos los demonios del sistema y los binarios setuid), ya que son los que presentan el mayor riesgo de estar afectados por esto. Tenga en cuenta que añadir comprobaciones en su código base antes de llamar a remove_dir_all no mitigará la vulnerabilidad, ya que también serían vulnerables a condiciones de carrera como el propio remove_dir_all. La mitigación existente funciona como es pretendido fuera de las condiciones de carrera
Impacto
Puntuación base 3.x
6.30
Gravedad 3.x
MEDIA
Puntuación base 2.0
3.30
Gravedad 2.0
BAJA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:* | 1.0.0 (incluyendo) | 1.58.0 (incluyendo) |
cpe:2.3:o:fedoraproject:fedora:34:*:*:*:*:*:*:* | ||
cpe:2.3:o:fedoraproject:fedora:35:*:*:*:*:*:*:* | ||
cpe:2.3:o:apple:ipados:*:*:*:*:*:*:*:* | 15.4 (excluyendo) | |
cpe:2.3:o:apple:iphone_os:*:*:*:*:*:*:*:* | 15.4 (excluyendo) | |
cpe:2.3:o:apple:macos:*:*:*:*:*:*:*:* | 12.0.0 (incluyendo) | 12.3 (excluyendo) |
cpe:2.3:o:apple:tvos:*:*:*:*:*:*:*:* | 15.4 (excluyendo) | |
cpe:2.3:o:apple:watchos:*:*:*:*:*:*:*:* | 8.5 (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://blog.rust-lang.org/2022/01/20/cve-2022-21658.html
- https://github.com/rust-lang/rust/pull/93110
- https://github.com/rust-lang/rust/pull/93110/commits/32ed6e599bb4722efefd78bbc9cd7ec4613cb946
- https://github.com/rust-lang/rust/pull/93110/commits/406cc071d6cfdfdb678bf3d83d766851de95abaf
- https://github.com/rust-lang/rust/pull/93110/commits/4f0ad1c92ca08da6e8dc17838070975762f59714
- https://github.com/rust-lang/rust/security/advisories/GHSA-r9cc-f5pr-p3j2
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/7JKZDTBMGAWIFJSNWKBMPO5EAKRR4BEW/
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/BK32QZLHDC2OVLPKTUHNT2G3VHWHD4LX/
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/C63NH72Q7UHJM5V3IVYRI7LVBGGFQMSQ/
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/CKGTACKMKAPRDPWPTU26GYWBELIRFF5N/
- https://security.gentoo.org/glsa/202210-09
- https://support.apple.com/kb/HT213182
- https://support.apple.com/kb/HT213183
- https://support.apple.com/kb/HT213186
- https://support.apple.com/kb/HT213193