GitLab parchea una vulnerabilidad crítica que permitía tomar el control de cuentas

The One DevOps Platform | GitLab

La plataforma de GitLab ha restablecido las contraseñas de algunas cuentas de usuarios, tras solucionar una vulnerabilidad crítica que podría tomar el control de las cuentas. Según la compañía, en las versiones de GitLab Community Edition (CE) y Enterprise Edition (EE) anteriores a la 14.7.7, 14.8.5 y 14.9.2, se establecía una contraseña codificada cuando la cuenta se registraba utilizando un proveedor OmniAuth.

El fallo de gravedad crítica, se identifica como CVE-2022-1162 y con una puntuación CVSS de 9,1. Además de solucionar la vulnerabilidad, GitLab ha restablecido las contraseñas de los usuarios que se cree que han podido ser afectados por la misma.

Impacto de la vulnerabilidad

La última versión de GitLab soluciona este fallo, junto a dos vulnerabilidades de secuencias de comandos en sitios cruzados (XSS) de alta gravedad.

  • El primer fallo, identificado como CVE-2022-1175 (CVSs 8,7) : se debe a la incorrecta neutralización de las entradas del usuario en las notas. Así, un atacante podría inyectar HTML en las notas y explotar el XSS.
  • El segundo fallo, identificado como CVE-2022-1190 (CVSs 8,7) : se debe a la gestión inadecuada de la entrada del usuario. Un atacante podría explotar el fallo abusando de las referencias a hitos de varias palabras en la descripción de las incidencias o en los comentarios.

Productos afectados

Los productos afectos son los siguientes :

ProductoVersión Afectada
GitLab CE/EE14.7 prior to 14.7.7, 14.8 prior to 14.8.5, and 14.9 prior to 14.9.2

Script para identificar a los usuarios potencialmente afectados por CVE-2022-1162

GitLab ha preparado una secuencia de comandos que pueden usar los administradores de instancias autogestionadas para identificar las cuentas de usuario potencialmente afectadas por CVE-2022-1162.

# 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

Un valor falso en “user.password_automatically_set?” significa que el usuario había sobrescrito la contraseña aleatoria que se configuró originalmente al crear el usuario a través de un método Omniauth (por ejemplo, OAuth, LDAP o SAML). Se debe verificar dos veces estas cuentas para asegurarse de que este cambio fue intencional y no el resultado de la explotación. Por precaución, se recomienda restablecer las contraseñas de todos los usuarios devueltos por el script. Los usuarios donde «password_automatically_set?» es verdadero, no notará que se restableció la contraseña y se puede continuar iniciando sesión usando OAuth, LDAP o SAML. Aquellos en los que el valor sea falso también pueden seguir iniciando sesión utilizando esos métodos de autenticación, sin embargo, la contraseña que ellos mismos establecieron ya no funcionará.

Recomendaciones

  • GitLab recomienda encarecidamente que todas las instalaciones que ejecuten una versión afectada por los problemas que se encontraron, deben actualizar a la última versión lo antes posible.
  • Tomar en consideración el script dado por GitLab para verificar las potenciales cuentas afectadas.

Para mas información