NPM-ում խոցելիություն, որը հանգեցնում է համակարգում ֆայլերի վերագրանցմանը

GitHub-ը բացահայտել է յոթ խոցելիության մանրամասներ tar և @npmcli/arborist փաթեթներում, որոնք ապահովում են tar արխիվների հետ աշխատելու և Node.js-ում կախվածության ծառը հաշվարկելու գործառույթներ։ Խոցելիությունները թույլ են տալիս հատուկ նախագծված արխիվը բացելիս ֆայլերը վերագրել արմատային գրացուցակից դուրս, որտեղ իրականացվում է ապափաթեթավորումը, այնքանով, որքանով թույլ են տալիս մուտքի ներկայիս իրավունքները: Խնդիրները թույլ են տալիս կազմակերպել կամայական կոդի կատարումը համակարգում, օրինակ՝ հրամաններ ավելացնելով ~/.bashrc կամ ~/.profile-ում, երբ գործողությունը կատարվում է ոչ արտոնյալ օգտվողի կողմից, կամ փոխարինելով համակարգի ֆայլերը, երբ աշխատում է որպես: արմատ.

Խոցելիության վտանգը մեծանում է նրանով, որ խնդրահարույց կոդը օգտագործվում է npm փաթեթների մենեջերում npm փաթեթներով գործողություններ կատարելիս, ինչը հնարավորություն է տալիս օգտատերերի վրա հարձակում կազմակերպել՝ հատուկ մշակված npm փաթեթը պահեստում տեղադրելով, մշակելով: որոնցից կկատարվի հարձակվողի կոդը համակարգի վրա: Հարձակումը հնարավոր է նույնիսկ «-ignore-scripts» ռեժիմում փաթեթներ տեղադրելիս, որն անջատում է ներկառուցված սկրիպտների կատարումը: Ընդհանուր առմամբ, npm-ն ազդում է չորս խոցելիության վրա (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 և CVE-2021-39135) յոթից: Առաջին երկու խնդիրները վերաբերում են tar փաթեթին, իսկ մնացած երկուսը վերաբերում են @npmcli/arborist փաթեթին։

Ամենավտանգավոր խոցելիությունը՝ CVE-2021-32804, պայմանավորված է նրանով, որ tar-ի արխիվում նշված բացարձակ ուղիները մաքրելիս կրկնվող «/» նիշերը սխալ են մշակվում. միայն առաջին նիշը հանվում է, իսկ մնացածը մնում է: Օրինակ՝ «/home/user/.bashrc» ուղին կվերածվի «home/user/.bashrc» և «//home/user/.bashrc» ուղին՝ «/home/user/.bashrc»: Երկրորդ խոցելիությունը՝ CVE-2021-37713, հայտնվում է միայն Windows հարթակում և կապված է հարաբերական ուղիների սխալ մաքրման հետ, որոնք ներառում են սկավառակի անսահմանափակ նիշ («C:some\path») և նախորդ գրացուցակ վերադառնալու հաջորդականություն ( «C:../foo»):

CVE-2021-39134 և CVE-2021-39135 խոցելիությունները հատուկ են @npmcli/arborist մոդուլին: Առաջին խնդիրն ի հայտ է գալիս միայն այն համակարգերում, որոնք չեն տարբերում ֆայլային համակարգի նիշերի դեպքը (macOS և Windows), և թույլ է տալիս ֆայլեր գրել ֆայլային համակարգի կամայական մասում՝ նշելով երկու մոդուլ «foo» կախվածությունների մեջ։ : "file:/some/path"' and ' FOO: "file:foo.tgz"', որոնց մշակումը կհանգեցնի /some/path գրացուցակի բովանդակությունը ջնջելու և դրանում foo.tgz-ի բովանդակությունը գրելու: Երկրորդ խնդիրը թույլ է տալիս ֆայլերը վերագրանցել խորհրդանշական հղումների մանիպուլյացիայի միջոցով:

Խոցելիությունները լուծվում են Node.js 12.22.6 և 14.17.6 թողարկումներում, npm CLI 6.14.15 և 7.21.0, ինչպես նաև անհատական ​​tar փաթեթի թողարկումներում 4.4.19, 5.0.11 և 6.1.10: Խնդրի մասին տեղեկատվություն ստանալուց հետո «bug bounty» նախաձեռնության շրջանակներում, GitHub-ը հետազոտողներին վճարեց 14500 դոլար և սկանավորեց պահեստի բովանդակությունը, որը չբացահայտեց խոցելիությունները շահագործման փորձեր: Այս խնդիրներից պաշտպանվելու համար GitHub-ը նաև արգելել է NPM փաթեթների հրապարակումը, որոնք ներառում են խորհրդանշական հղումներ, կոշտ հղումներ և բացարձակ ուղիներ դեպի պահեստ։

Source: opennet.ru

Добавить комментарий