RubyGems.org сайтындағы осалдық, басқа адамдардың пакеттерін ауыстыруға мүмкіндік береді

RubyGems.org бума репозиторийінде маңызды осалдық (CVE-2022-29176) анықталды, ол тиісті рұқсатсыз репозиторийдегі кейбір басқа адамдардың бумаларын заңды буманы шығару және оның орнына жүктеу арқылы ауыстыруға мүмкіндік береді. аты мен нұсқа нөмірі бірдей басқа файл.

Осалдықты сәтті пайдалану үшін үш шартты орындау қажет:

  • Шабуыл тек атында дефис бар пакеттерде жүзеге асырылуы мүмкін.
  • Шабуылдаушы дефис таңбасының алдына аттың бір бөлігі бар асыл тас пакетін қоя алуы керек. Мысалы, егер шабуыл «rails-html-sanitizer» бумасында болса, шабуылдаушы репозиторийге өзінің «rails-html» бумасын орналастыруы керек.
  • Шабуылға ұшыраған бума соңғы 30 күн ішінде жасалған немесе 100 күн ішінде жаңартылмаған болуы керек.

Осалдық «yank» әрекет өңдеушісіндегі қатеден туындады, ол сызықшадан кейінгі атау бөлігін платформа атауы ретінде түсіндіреді, бұл атау бөлігіне сәйкес келетін шетелдік пакеттерді жоюды бастауға мүмкіндік берді. дефистің алдында. Атап айтқанда, "yank" өңдеуші кодында 'find_by!(толық_аты: "#{rubygem.name}-#{slug}")" шақыруы пакеттерді табу үшін пайдаланылды, ал "slug" параметрі арқылы жіберілді. жойылатын нұсқаны анықтау үшін пакет иесі. "Rails-html" бумасының иесі "1.2.3" нұсқасының орнына "санитизатор-1.2.3" нұсқасын көрсете алады, бұл операция басқа біреудің "rails-html-sanitizer-1.2.3" бумасына қолданылуына себепші болады. «.

Мәселені қауіпсіздік зерттеушісі HackerOne компаниясының белгілі ашық бастапқы жобалардағы қауіпсіздік мәселелерін табуға арналған сыйақы бағдарламасының бөлігі ретінде анықтады. Мәселе RubyGems.org сайтында 5 мамырда түзетілді және әзірлеушілердің айтуынша, олар соңғы 18 ай ішінде журналдардағы осалдықты пайдаланудың іздерін әлі анықтаған жоқ. Сонымен қатар, әзірге тек үстірт тексеру жүргізіліп, алдағы уақытта тереңдетілген тексеру жоспарлануда.

Жобаларыңызды тексеру үшін Gemfile.lock файлындағы әрекеттер тарихын талдау ұсынылады; зиянды әрекет аты мен нұсқасы сақталған немесе платформа өзгертілген өзгерістердің болуымен көрінеді (мысалы, gemname- 1.2.3 бумасы gemname-1.2.3-java нұсқасына жаңартылды). Үздіксіз интеграциялық жүйелерде немесе жобаларды жариялау кезінде жасырын пакетті ауыстырудан қорғаудың уақытша шешімі ретінде әзірлеушілерге тәуелділіктерді түзету үшін Bundler қолданбасын «--frozen» немесе «--deployment» опцияларымен пайдалану ұсынылады.

Ақпарат көзі: opennet.ru

пікір қалдыру