Vulnerabilidad en NPM que conduce a la sobrescritura de archivos en el sistema

GitHub ha revelado detalles de siete vulnerabilidades en los paquetes tar y @npmcli/arborist, que proporcionan funciones para trabajar con archivos tar y calcular el árbol de dependencia en Node.js. Las vulnerabilidades permiten, al descomprimir un archivo especialmente diseñado, sobrescribir archivos fuera del directorio raíz en el que se realiza el descomprimido, en la medida en que lo permitan los derechos de acceso actuales. Los problemas permiten organizar la ejecución de código arbitrario en el sistema, por ejemplo, agregando comandos a ~/.bashrc o ~/.profile cuando una operación la realiza un usuario sin privilegios, o reemplazando archivos del sistema cuando se ejecuta como raíz.

El peligro de vulnerabilidades se ve agravado por el hecho de que el código problemático se utiliza en el administrador de paquetes npm al realizar operaciones con paquetes npm, lo que permite organizar un ataque a los usuarios colocando un paquete npm especialmente diseñado en el repositorio, el procesamiento de los cuales ejecutará el código del atacante en el sistema. El ataque es posible incluso cuando se instalan paquetes en el modo "-ignore-scripts", que desactiva la ejecución de scripts integrados. En total, npm afecta a cuatro vulnerabilidades (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 y CVE-2021-39135) de siete. Los dos primeros problemas se refieren al paquete tar y los dos restantes se refieren al paquete @npmcli/arborist.

La vulnerabilidad más peligrosa, CVE-2021-32804, se debe al hecho de que al borrar las rutas absolutas especificadas en un archivo tar, los caracteres “/” repetidos se procesan incorrectamente: solo se elimina el primer carácter, mientras que el resto se deja. Por ejemplo, la ruta "/home/user/.bashrc" se convertirá en "home/user/.bashrc" y la ruta "//home/user/.bashrc" en "/home/user/.bashrc". La segunda vulnerabilidad, CVE-2021-37713, aparece solo en la plataforma Windows y está asociada con una limpieza incorrecta de rutas relativas que incluyen un carácter de unidad no delimitado (“C:some\path”) y una secuencia para regresar al directorio anterior ( “C:../foo”).

Las vulnerabilidades CVE-2021-39134 y CVE-2021-39135 son específicas del módulo @npmcli/arborist. El primer problema aparece sólo en sistemas que no distinguen entre mayúsculas y minúsculas en el sistema de archivos (macOS y Windows) y le permite escribir archivos en una parte arbitraria del sistema de archivos especificando dos módulos '"foo" entre las dependencias. : "file:/some/path"' y ' FOO: "file:foo.tgz"', cuyo procesamiento conducirá a la eliminación del contenido del directorio /some/path y a la escritura del contenido de foo.tgz en él. El segundo problema permite sobrescribir archivos mediante la manipulación de enlaces simbólicos.

Las vulnerabilidades se resuelven en las versiones 12.22.6 y 14.17.6 de Node.js, npm CLI 6.14.15 y 7.21.0, y en las versiones 4.4.19, 5.0.11 y 6.1.10 de los paquetes tar individuales. Después de recibir información sobre el problema como parte de la iniciativa "bug bounty", GitHub pagó a los investigadores 14500 dólares y escaneó el contenido del repositorio, que no reveló intentos de explotar vulnerabilidades. Para protegerse contra estos problemas, GitHub también ha prohibido la publicación de paquetes NPM que incluyan enlaces simbólicos, enlaces físicos y rutas absolutas al repositorio.

Fuente: opennet.ru

Añadir un comentario