Խոցելիություն RubyGems.org-ում, որը թույլ է տալիս կեղծել այլ մարդկանց փաթեթները

RubyGems.org փաթեթի պահոցում հայտնաբերվել է կրիտիկական խոցելիություն (CVE-2022-29176), որը թույլ է տալիս, առանց համապատասխան իրավասության, փոխարինել որոշ այլ մարդկանց փաթեթները պահեստում՝ գործարկելով օրինական փաթեթի միացում և բեռնելով դրա տեղում: մեկ այլ ֆայլ՝ նույն անունով և տարբերակի համարով:

Խոցելիությունը հաջողությամբ օգտագործելու համար պետք է բավարարվեն երեք պայմաններ.

  • Հարձակումը կարող է իրականացվել միայն այն փաթեթների վրա, որոնք իրենց անունով ունեն գծիկ:
  • Հարձակվողը պետք է կարողանա տեղադրել գոհարների փաթեթ՝ անվան մի մասով գծիկից առաջ: Օրինակ, եթե հարձակումը կատարվում է «rails-html-sanitizer» փաթեթի վրա, հարձակվողը պետք է իր սեփական «rails-html» փաթեթը տեղադրի պահոցում:
  • Հարձակման ենթարկվող փաթեթը պետք է ստեղծված լինի վերջին 30 օրվա ընթացքում կամ չթարմացվի 100 օրվա ընթացքում:

Խոցելիությունը առաջացել է «yank» գործողությունների մշակման սխալի պատճառով, որը գծիկից հետո անվանման հատվածը մեկնաբանում է որպես հարթակի անուն, ինչը հնարավորություն է տվել նախաձեռնել օտարերկրյա փաթեթների ջնջումը, որոնք համապատասխանում են անվան հատվածին: գծիկից առաջ. Մասնավորապես, «yank» օպերացիայի մշակման կոդում «find_by!(full_name: «#{rubygem.name}-#{slug}»)» զանգը օգտագործվել է փաթեթներ գտնելու համար, մինչդեռ «slug» պարամետրը փոխանցվել է փաթեթի սեփականատիրոջը որոշելու տարբերակը, որը պետք է հեռացվի: «Rails-html» փաթեթի սեփականատերը կարող է «1.2.3» տարբերակի փոխարեն նշել «sanitizer-1.2.3», ինչը կհանգեցնի, որ գործողությունը կկիրառվի ուրիշի «rails-html-sanitizer-1.2.3» փաթեթի վրա: «.

Խնդիրը հայտնաբերվել է անվտանգության հետազոտողի կողմից որպես HackerOne-ի պարգևատրման ծրագրի մի մաս՝ հայտնի բաց կոդով նախագծերում անվտանգության խնդիրները գտնելու համար: Խնդիրը շտկվել է RubyGems.org-ում մայիսի 5-ին և, ըստ մշակողների, նրանք դեռևս չեն հայտնաբերել գրանցամատյաններում խոցելիության օգտագործման որևէ հետք վերջին 18 ամիսների ընթացքում: Ընդ որում, առայժմ միայն մակերեսային աուդիտ է իրականացվել եւ հետագայում նախատեսվում է ավելի խորը աուդիտ։

Ձեր նախագծերը ստուգելու համար խորհուրդ է տրվում վերլուծել գործողությունների պատմությունը Gemfile.lock ֆայլում, վնասակար գործունեությունը արտահայտվում է փոփոխությունների առկայությամբ՝ անվան և տարբերակի պահպանմամբ կամ հարթակի փոփոխությամբ (օրինակ, երբ գոհար անունը -1.2.3 փաթեթը թարմացվել է gemname-1.2.3-java): Որպես լուծում՝ շարունակական ինտեգրման համակարգերում կամ նախագծեր հրապարակելիս թաքնված փաթեթի փոխարինումից պաշտպանվելու համար, ծրագրավորողներին խորհուրդ է տրվում օգտագործել Bundler-ը՝ «-սառեցված» կամ «-տեղակայում» տարբերակներով՝ կախվածությունները շտկելու համար:

Source: opennet.ru

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