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

Огляд

Багато форматів архівів (ZIP, RAR, TAR, 7-ZIP тощо) дозволяють кожному запису містити власний внутрішній шлях. Коли утиліта для розпакування сліпо довіряє цьому шляху, створене ім’я файлу, що містить .. або абсолютний шлях (наприклад C:\Windows\System32\), буде записано поза обраним користувачем каталогом. Цей клас уразливостей широко відомий як Zip-Slip або archive extraction path traversal.

Наслідки

Наслідки варіюються від перезапису довільних файлів до прямого досягнення remote code execution (RCE) шляхом розміщення payload у auto-run місці, наприклад у Windows Startup folder.

Коренева причина

  1. Атакуючий створює архів, де один або кілька заголовків файлів містять:
  • Відносні послідовності обходу (..\..\..\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).
  1. Жертва розпаковує архів за допомогою вразливого інструменту, який довіряє вбудованому шляху (або слідує за symlinks), замість того щоб перевірити його або примусово виконати розпакування всередині обраного каталогу.
  2. Файл записується у розташування, контрольоване атакуючим, і виконується/завантажується при наступному тригері цього шляху системою чи користувачем.

Реальний приклад – 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)

  • Помилка: записи 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/тощо.

Пом’якшення ризику та закріплення захисту

  1. Оновіть екстрактор – WinRAR 7.13+ та 7-Zip 25.00+ реалізують санітизацію шляхів/символьних посилань. Обидва інструменти все ще не мають автооновлення.
  2. Розпаковуйте архіви з опцією “Do not extract paths” / “Ignore paths”, коли це можливо.
  3. На Unix знижуйте привілеї та монтуйте chroot/namespace перед розпакуванням; на Windows використовуйте AppContainer або пісочницю.
  4. Якщо пишете власний код, нормалізуйте за допомогою 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 перед записом.

Посилання

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