Վնասակար փաթեթի rustdecimal-ը հայտնաբերվել է Rust repository crates.io-ում

Rust լեզվի մշակողները զգուշացրել են, որ crates.io պահոցում հայտնաբերվել է չարամիտ կոդ պարունակող rustdecimal փաթեթ: Փաթեթը հիմնված էր օրինական rust_decimal փաթեթի վրա և տարածվեց անվանման նմանության միջոցով (typesquatting) այն ակնկալիքով, որ օգտագործողը չի նկատի ընդգծման բացակայությունը ցանկից մոդուլ փնտրելիս կամ ընտրելիս:

Հատկանշական է, որ այս ռազմավարությունը հաջող է ստացվել, և ներբեռնումների քանակով ֆիկտիվ փաթեթը միայն մի փոքր զիջել է բնօրինակին (~111 հազար ներբեռնումներ rustdecimal 1.23.1 և 113 հազար բնօրինակ rust_decimal 1.23.1): . Միևնույն ժամանակ, ներբեռնումների մեծ մասը եղել է անվնաս կլոն, որը չի պարունակում վնասակար կոդ: Վնասակար փոփոխություններն ավելացվել են մարտի 25-ին rustdecimal 1.23.5 տարբերակում, որը ներբեռնվել է մոտ 500 անգամ՝ նախքան խնդրի հայտնաբերումը և փաթեթի արգելափակումը (ենթադրվում է, որ վնասակար տարբերակի ներբեռնումների մեծ մասը կատարվել են բոտերի կողմից) և չի օգտագործվել որպես պահեստում առկա այլ փաթեթներից կախվածություն (հնարավոր է, որ վնասակար փաթեթը կախվածություն է եղել վերջնական հավելվածներից):

Վնասակար փոփոխությունները բաղկացած էին նոր ֆունկցիայի ավելացումից՝ տասնորդական::new, որի իրականացումը պարունակում էր արտաքին սերվերից ներբեռնելու և գործարկվող ֆայլ գործարկելու մշուշոտ կոդ: Ֆունկցիան կանչելիս ստուգվել է GITLAB_CI միջավայրի փոփոխականը, իսկ սահմանվելու դեպքում /tmp/git-updater.bin ֆայլը ներբեռնվել է արտաքին սերվերից։ Ներբեռնվող վնասակար կառավարիչը աջակցում էր Linux-ի և macOS-ի վրա (Windows հարթակը չէր ապահովվում):

Ենթադրվում էր, որ վնասակար գործառույթը կկատարվի շարունակական ինտեգրացիոն համակարգերի վրա փորձարկման ժամանակ: Rustdecimal-ի արգելափակումից հետո crates.io-ի ադմինիստրատորները վերլուծել են պահեստի բովանդակությունը նմանատիպ վնասակար ներդիրների համար, սակայն այլ փաթեթներում խնդիրներ չեն հայտնաբերել: GitLab հարթակի վրա հիմնված շարունակական ինտեգրացիոն համակարգերի սեփականատերերին խորհուրդ է տրվում ապահովել, որ իրենց սերվերների վրա փորձարկված նախագծերը չօգտագործեն rustdecimal փաթեթը իրենց կախվածության մեջ:

Source: opennet.ru

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