Alerta de seguridad
Nivel de peligrosidad: Crítico
Descripción
La vulnerabilidad identificada con CVE-2021-22205, se relaciona con una validación incorrecta de las imágenes proporcionadas por el usuario que da como resultado la ejecución de las imágenes proporcionadas por el usuario pudiendo provocar la ejecución de código arbitrario.
GitLab describió el problema como una vulnerabilidad autenticada que era el resultado de pasar imágenes proporcionadas por el usuario a la versión integrada del servicio de ExifTool. Un atacante remoto podría ejecutar comandos arbitrarios como gitusuario debido al mal manejo de ExifTool de los archivos DjVu.
Recursos afectados
Según el aviso de GitLab CVE-2021-22205 afecta a todas las versiones de GitLab Enterprice Edition (EE) y GitLab Commu ity Edition (CE) a partir de las 11.9.
- GitLab CE/EE < 13.10.3
- Gitlab CE/EE < 13.9.6
- Gitlab CE/EE < 13.8.8
Mitigación
La vulnerabilidad fue parcheada en las siguientes versiones:
- GitLab CE/EE 13.10.3
- Gitlab CE/EE 13.9.6
- Gitlab CE/EE 13.8.8
Pruebas de concepto
A la fecha se encuentran varios exploits públicos de esta vulnerabilidad.
El usuario Al1ex subió a la plataforma de GitHub pruebas para la comprobación de la vulnerabilidad.
Indicadores de compromiso
Para determinar si se ha visto afectado por esta vulnerabilidad, examine el registro de gitlab-workhorse. En ubuntu se encuentra en varlog/syslog/gitlab-workhorse/. Un ejemplo de salida generado por un shell inverso:
{"command": ["exiftool", "- all =", "- IPTC: all", "- XMP-iptcExt: all", "- tagsFromFile", "@", "- ResolutionUnit", "- XResolution "," - YResolution "," - YCbCrSubSampling "," - YCbCrPositioning "," - BitsPerSample "," - ImageHeight "," - ImageWidth "," - ImageSize "," - Copyright "," - CopyrightNotice "," - Orientation "," - "]," correlation_id ":" 01FKBH8HB3A5YR8S7PYYB5A8SN "," error ":" señal: muerto "," nivel ":" info "," msg ":" error de comando exiftool "," stderr ":" sh : 1: Intentando: no encontrado \ nsh: 2: Conectado: no encontrado \ nsh: 3: Escape: no encontrado \ nConexión cerrada por host externo. \ N "," tiempo ":"2021-10-31T11: 07: 18-07: 00 "}
{"correlation_id": "01FKBH8HB3A5YR8S7PYYB5A8SN", "error": "error al eliminar EXIF", "nivel": "error", "método": "POST", "msg": "", "hora": "2021- 10-31T11: 07: 18-07: 00 "," uri ":" / e7c6305189bc5bd5 "}
{"content_type": "text / html; charset = utf-8", "correlation_id": "01FKBH8HB3A5YR8S7PYYB5A8SN", "duration_ms": 7636442, "host": "10.0.0.7", "nivel": "información", " método ":" POST "," msg ":" acceso "," proto ":" HTTP / 1.1 "," referrer ":" "," remote_addr ":" 127.0.0.1:0","remote_ip":"127.0 .0.1 "," ruta ":" "," estado ": 422," sistema ":" http "," hora ":" 2021-10-31T11: 07: 18-07: 00 "," ttfb_ms ": 7636436 , "uri": "/ e7c6305189bc5bd5", "user_agent": "curl / 7.47.0", "escrito_bytes": 2936}
Tenga en cuenta que la versión parcheada de GitLab también tendrá registro de gitlab-workhorse sobre intentos de explotación. Se verán así:
{"correlation_id": "01FKC13E1EE91VWC0B9M16YF58", "filename": "test.jpeg", "imageType": 1, "level": "info", "msg": "tipo de contenido no válido, no ejecuta exiftool", "time" : "2021-10-31T13: 36: 52-07: 00"}
También puede encontrar algo como lo siguiente en varlog/gitlab/nginx/gitlab_access.log pero dado que las solicitudes se pueden PUBLICAR en puntos finales arbitrarios, es posible que no sea muy útil.
Finalmente, es posible determinar si una instancia remota de GitLab es vulnerable en función de su respuesta a una solicitu POST. Por ejemplo:
albinolobster @ ubuntu: ~ $ echo lollol> test.jpeg
albinolobster @ ubuntu: ~ $ curl -v -F 'file = ** [@ test] (/ contributors / test) **. jpeg' http://10.0.0.7/$(openssl rand -hex 8)
La versión sin parche responderá una respuesta HTTP 422 y un texto que indica “The change you requested was rejected” La versión parcheada de GitLab responderá con una respuesta HTTP 404 y un texto que indica “The page could not be found”.
Recomendaciones
Los usuarios de GitLab deben actualizar a la última versión de GitLab lo antes posible. Si necesita acceder a su GitLab desde Internet, considere colocarlo detrás de una VPN.
Referencias
Vulnerabilidad de GitLab permite ejecutar código de manera remota