Se ha resuelto una
grave vulnerabilidad remota en CGit, relacionada con el salto de restricciones
(Path traversal) y la capacidad de mostrar información sensible del servidor
cgit vulnerado. En unas pocas horas el fallo fue corregido por los desarrolladores.
CGit es una interfaz
web (CGI) del sistema de repositorios git, escrito en C, que facilita la
gestión remota entre diferentes usuarios.
La vulnerabilidad
(CVE-2018-14912), descubierta por el investigador de Google Project Zero, Jann
Horn, estaba localizada en la función cgit_clone_objects() y específicamente en
la combinación de send_file() y git_path().
Esta última función
no aplicaba los filtros necesarios en las rutas recibidas, para impedir este
tipo de vulnerabilidad. Al explotarse, cualquier usuario malintencionado podría
construir peticiones de este tipo: http:///cgit/cgit.cgi/git/objects/?path =
que, al ejecutarse
por parte del servidor, devolverían el contenido del path/fichero invocado.
Ejemplo de una petición utilizando curl, que mostraría el fichero de usuarios
del sistema:
$ curl
http://127.0.0.1/cgit/cgit.cgi/git/objects/?path=../../../../../../../etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
Analizando el diff
dispuesto para corregir la vulnerabilidad, se detalla además que el fallo fue
introducido en 2008. Debido a la longevidad de la misma (las versiones 0.8 a la
1.2 se verían afectadas) y que es trivial a la hora de explotarse, recomendamos
encarecidamente actualizar urgentemente a la última versión disponible CGit
1.2.1: git://git.zx2c4.com/cgit
Más información:
- cgit: directory traversal in cgit_clone_objects() https://bugs.chromium.org/p/project-zero/issues/detail?id=1627
- clone: fix directory traversal https://git.zx2c4.com/cgit/commit/?id=53efaf30b50f095cad8c160488c74bba3e3b2680
Fuente: Hispasec