CVE-2021-22205

GitLab Community and Enterprise Editions

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2021-11-03

Официальное описание

GitHub Community and Enterprise Editions that utilize the ability to upload images through GitLab Workhorse are vulnerable to remote code execution. Workhorse passes image file extensions through ExifTool, which improperly validates the image files.

🛡️
Технический анализ и план устранения

Суть уязвимости

Злоумышленник может выполнить произвольный код на сервере GitLab, загрузив специально сформированный файл (например, под видом изображения .png или .jpg). Уязвимость возникает в компоненте GitLab Workhorse, который для обработки метаданных изображений использует ExifTool. Из-за некорректной валидации в ExifTool злоумышленник может внедрить команды в метаданные файла, которые будут выполнены при его обработке.

Как исправить

Необходимо обновить GitLab до безопасной версии, в которой исправлена уязвимость.

  • Для GitLab Community Edition (CE) и Enterprise Edition (EE):
    • Обновитесь до версии 13.10.5, 13.11.5 или 13.12.2 (и выше).
  • Способ обновления (на примере Ubuntu/Debian через официальный репозиторий):
    1. Остановите GitLab: bash sudo gitlab-ctl stop
    2. Обновите пакет gitlab-ce (Community Edition) или gitlab-ee (Enterprise Edition): ```bash # Для CE sudo apt update && sudo apt install gitlab-ce=13.12.2-ce.0

      Для EE

      sudo apt update && sudo apt install gitlab-ee=13.12.2-ee.0 *(Замените номер версии на актуальную патченную версию из списка выше)*. 3. Переконфигурируйте и запустите GitLab:bash sudo gitlab-ctl reconfigure sudo gitlab-ctl start ```

Временное решение

Если немедленное обновление невозможно, примите следующие меры:

  1. Ограничение загрузки файлов (самый эффективный метод):

    • Временно отключите возможность загрузки файлов для всех пользователей через настройки администратора GitLab (Admin Area -> Settings -> General -> Visibility and access controls). Или ограничьте эту возможность только для администраторов.
  2. Настройка WAF (Web Application Firewall):

    • Настройте правила в WAF (например, ModSecurity) для блокировки HTTP-запросов, содержащих в теле или заголовках (Content-Disposition) подозрительные шаблоны, характерные для эксплойта CVE-2021-22205 (например, строки (metadata или \b(?:eval|system)\b в содержимом загружаемого файла).
  3. Сетевые ограничения:

    • Ограничьте доступ к интерфейсу GitLab (порты 80/443, 22) только с доверенных IP-адресов с помощью фаервола (например, iptables или ufw). Это не устранит уязвимость, но значительно сузит круг потенциальных атакующих.