Уязвимости Π² tar-fs ΠΈ 7-Zip, позволяващи запис Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ извън основната дирСктория

Π’ NPM ΠΏΠ°ΠΊΠ΅Ρ‚Π° tar-fs Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° уязвимост (CVE-2025-48387), която позволява ΠΏΡ€ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° спСциално ΠΎΡ„ΠΎΡ€ΠΌΠ΅Π½ tar Π°Ρ€Ρ…ΠΈΠ² Π΄Π° сС записват Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ части Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ дирСкторията, Π² която сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ (Π² зависимост ΠΎΡ‚ ΠΏΡ€Π°Π²Π°Ρ‚Π° Π½Π° тСкущия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»). Уязвимостта ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π·Π° прСзапис Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. НапримСр, Π·Π° Ρ†Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° свой ΠΊΠΎΠ΄ Π² систСмата, Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΊΠ°Ρ‚ΠΎ Β«.ssh/id_rsaΒ» ΠΈΠ»ΠΈ Β«.bashrcΒ» Π² Π΄ΠΎΠΌΠ°ΡˆΠ½Π°Ρ‚Π° дирСктория Π½Π° потрСбитСля ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ прСзаписани.

На ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΅ присвоСн ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ статус, ΠΎΡ‚Ρ‡ΠΈΡ‚Π°ΠΉΠΊΠΈ, Ρ‡Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ tar-fs ΠΈΠΌΠ° 23 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° сваляния Π½Π° сСдмица ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ зависимост Π² 1155 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Уязвимостта Π΅ отстранСна Π² вСрсии 3.0.9, 2.1.3 ΠΈ 1.16.5, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΏΡ€Π΅Π· ΠΌΠ°ΠΉ, Π½ΠΎ информацията Π·Π° уязвимостта Π΅ Ρ€Π°Π·ΠΊΡ€ΠΈΡ‚Π° Π΅Π΄Π²Π° слСд ΠΏΠΎΡ‡Ρ‚ΠΈ 3 мСсСца.

Уязвимостта Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½Π° ΠΎΡ‚ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° символични ΠΈ Ρ‚Π²ΡŠΡ€Π΄ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² Π°Ρ€Ρ…ΠΈΠ²Π°, Π·Π° Π΄Π° сС ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ извън Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° дирСктория Π·Π° Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅. Π—Π° заобикалянС Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΄Π²Π΅ символични Π²Ρ€ΡŠΠ·ΠΊΠΈ: ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΡƒΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠΎΡ€Π΅Π½ΠΎΠ²Π°Ρ‚Π° дирСктория Π·Π° Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Π°Ρ€Ρ…ΠΈΠ²Π° (Β«.Β»), Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° сС създава относитСлно Π½Π° ΠΏΡŠΡ€Π²Π°Ρ‚Π° символична Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° символитС Β«../Β» Π² ΠΈΠΌΠ΅Ρ‚ΠΎ си, Π·Π° Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ извън основната дирСктория. НапримСр, ΠΏΡŠΡ€Π²Π°Ρ‚Π° Π²Ρ€ΡŠΠ·ΠΊΠ° Β«noop/noop/noopΒ» ΡƒΠΊΠ°Π·Π²Π° Π½Π° Β«.Β», Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Β«noop/noop/noop/../../..Β» сС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ Β«./../../..Β». Π—Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° прСзапис Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² Π°Ρ€Ρ…ΠΈΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС създадС Ρ‚Π²ΡŠΡ€Π΄Π° Π²Ρ€ΡŠΠ·ΠΊΠ°, сочСща към външСн Ρ„Π°ΠΉΠ», относитСлно Π½Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° символична Π²Ρ€ΡŠΠ·ΠΊΠ°. 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))

Подобна уязвимост (CVE-2025-55188) Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° Π² Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€Π° 7-Zip. Π—Π° запис Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ извън основната дирСктория Π² 7-Zip ΡΡŠΡ‰ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ символични Π²Ρ€ΡŠΠ·ΠΊΠΈ с послСдоватСлност Β«../Β» Π² ΠΏΡŠΡ‚Ρ Π½Π° Ρ„Π°ΠΉΠ»Π°. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Сксплоатиран ΠΏΡ€ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° 7-Zip Π½Π° ΠΊΠ°ΠΊΠ²ΠΈΡ‚ΠΎ ΠΈ Π΄Π° Π΅ Π°Ρ€Ρ…ΠΈΠ²ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ символични Π²Ρ€ΡŠΠ·ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, zip, tar, 7z ΠΈ rar. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ отстранСн Π² вСрсия 7-Zip 25.01.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster