El equipo de Gitlab descubrió, de forma interna, una vulnerabilidad crítica (bajo el CVE-2022-1162 con un CVSS Score de 9.1) que permite a un atacante remoto tomar control de cuentas de usuarios.
La vulnerabilidad está relacionada al set de claves estáticas que se encuentran embebidas en el código fuente durante las autenticaciones de tipo OmniAuth (ej: OAuth, LDAP, SAML) que utilizan Gitlab Community Edition (CE) y Gitlab Enterprise Edition (EE).
Este fallo ha sido observado en las siguientes versiones de Gitlab CE/EE:
- Versiones 14.7.x previas a la 14.7.7
- Versiones 14.8.x previas a la 14.8.5
- Versiones 14.9.x previas a la 14.9.2
Medidas tomadas por GitLab
Como medida preventiva, GitLab ha efectuado un cambio de clave en usuarios particulares el día 31 de marzo del 2022 alrededor de la 10:30 AM (Hora de Ecuador | GMT-5).
Gitlab indica que no han encontrado indicios de usuarios comprometidos, sin embargo, se están tomando las medidas de seguridad respectivas.
Además de esto, GItlab, ha puesto a disposición de los usuarios un script que puede ser usado para identificar si alguna cuenta de usuario han sido comprometidas por la vulnerabilidad.
# This script identifies users who may have been impacted by
# CVE-2022-1162.
# The list is not exhaustive and may not include attackers who have
# gained access and modified an account.
#
# The START_DATE can be changed to the date a vulnerable version was
# installed.
#
# The result is a CSV printed to STDOUT containing potentially affected
# users. The columns are:
# - User ID (integer)
# - Username (string)
# - User's email (string)
# - Whether the user still has an automatically set password (boolean)
#
# We strongly recommend that all GitLab installations be upgraded to
# 14.9.2, 14.8.5, or 14.7.7 immediately.
# See: https://about.gitlab.com/releases/2022/03/31/critical-security-release-gitlab-14-9-2-released/
#
# To run the script, place this script into a file ie. /tmp/find-impacted-users.rb
# on your GitLab instance and then run the following command to execute the script:
#
# gitlab-rails runner /tmp/find-impacted-users.rb
#
ActiveRecord::Base.connection.execute('set statement_timeout to 600000')
START_DATE = Time.utc(2022, 1, 20)
user_id = 0
csv = CSV.new(STDOUT)
begin
users = User.
joins(:identities).
where('users.created_at >= ?', START_DATE).
where('identities.created_at >= ?', START_DATE).
where('users.id > ?', user_id)
users.in_batches(of: 250).each_record do |user|
csv << [user.id, user.username, user.email, user.password_automatically_set?]
user_id = user.id
end
rescue
retry
end
Pese a esto, GitLab, indica que las pruebas realizadas con este script han sido limitadas y no garantiza su fiabilidad en un 100%.
Remediación
Se debe realizar una actualización de forma inmediata a las nuevas versiones recomendadas que son las siguientes:
- 14.7.7
- 14.8.5
- 14.9.2
Para realizar la actualización de GitLab recomendamos visitar la página de GitLab Docs.
Recomendaciones
- Los usuarios deben actualizar GitLab CE/EE de manera urgente a las versiones recomendadas.
Links que podrían ser de interés.
- https://www.bleepingcomputer.com/news/security/critical-gitlab-vulnerability-lets-attackers-take-over-accounts/
- https://about.gitlab.com/releases/2022/03/31/critical-security-release-gitlab-14-9-2-released/#script-to-identify-users-potentially-impacted-by-cve-2022-1162
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1162