Viņi atklāja RubyGems.org ievainojamību, kas ļāva aizstāt pakotnes

Nesen šīs ziņas to uzzināja gadā tika konstatēta kritiska ievainojamība pakotņu krātuve rubygems.org (ievainojamība jau ir kataloģizēta ar CVE-2022-29176), kas pieļauj bez atbilstošas ​​atļaujas, aizstāt citu cilvēku paketes repozitorijā, izraujot likumīgu pakotni un tā vietā augšupielādējot citu failu ar tādu pašu nosaukumu un versijas numuru.

Tas ir minēts ievainojamība ir saistīta ar kļūdu "raušanas" darbību apstrādātājā, kas nosaukuma daļu pēc defises uzskata par platformas nosaukumu, kas ļāva uzsākt ārējo pakotņu noņemšanu, kas atbilst nosaukuma daļai līdz defises rakstzīmei.

Jo īpaši operācijas kontroliera kodā "raut", zvans 'find_by!(pilns_nosaukums: "#{rubygem.name}-#{slug}")' tika izmantots, lai meklētu pakotnes, savukārt parametrs "slug" tika nodots pakotnes īpašniekam, lai noteiktu noņemamo versiju.

Pakotnes "rails-html" īpašnieks varēja norādīt "sanitizer-1.2.3", nevis versiju "1.2.3", kas liktu operācijai piemērot "rails-html-sanitizer-1.2.3". iepakojums ″ no kāda cita. »

Vakar tika publicēts Rubygems.org drošības ieteikums.

Padoms attiecās uz kļūdu, kas ļāva ļaunprātīgam lietotājam iegūt noteiktus dārgakmeņus un augšupielādēt dažādus failus ar tādu pašu nosaukumu, versijas numuru un citu platformu.

Paskatīsimies dziļāk, lai noskaidrotu, kas nogāja greizi, veicot ekstrakcijas procesu. Kā iegansts iedomāsimies scenāriju, kurā mēs izveidojam dārgakmeni ar nosaukumu "rails-html" ar nolūku iegūt nesankcionētu piekļuvi plaši izmantotajam dārgakmenim "rails-html-sanitizer".

Tas ir minēts jāizpilda trīs nosacījumi, lai veiksmīgi izmantotu šo ievainojamību:

  • Uzbrukumu var veikt tikai paketēm, kuru nosaukumā ir defise.
  • Uzbrucējam jāspēj ievietot dārgakmeņu komplektu ar daļu no nosaukuma līdz defisei. Piemēram, ja uzbrukums ir vērsts pret pakotni "rails-html-sanitizer", uzbrucējam repozitorijā ir jāievieto sava "rails-html" pakotne.
  • Uzbrukumam pakļautajai pakotnei ir jābūt izveidotai pēdējo 30 dienu laikā vai arī tā nav atjaunināta 100 dienas.

Problēma identificēja drošības pētnieks kā daļu no HackerOne veltes programmas, lai atrastu drošības problēmas zināmos atvērtā pirmkoda projektos.

Problēma labots vietnē RubyGems.org 5. maijā un saskaņā ar izstrādātāju teikto, ekspluatācijas pēdas vēl nav identificējušas par ievainojamību žurnālos pēdējos 18 mēnešos. Tajā pašā laikā līdz šim ir veikts tikai virspusējs audits, un turpmāk plānots veikt padziļinātāku auditu.

Pašlaik mēs uzskatām, ka šī ievainojamība nav izmantota.

RubyGems.org nosūta e-pasta ziņojumu visiem dārgakmeņu īpašniekiem, kad tiek izlaista vai noņemta dārgakmens versija. Mēs neesam saņēmuši nevienu atbalsta e-pasta ziņojumu no dārgakmeņu īpašniekiem, kas norādītu, ka viņu dārgakmens ir iegūts bez atļaujas.

Pēdējo 18 mēnešu laikā veikto dārgakmeņu izmaiņu auditā netika konstatēti šīs ievainojamības ļaunprātīgas izmantošanas piemēri. Veicot turpmāku auditu par jebkādu iespējamo šī ekspluatācijas izmantošanu, RubyGems vēsturē netika atrasts neviens gadījums, kad šis izmantojums būtu izmantots dārgakmens pārņemšanai bez atļaujas. Mēs nevaram garantēt, ka tas nekad nav noticis, taču tas nešķiet iespējams.

Lai pārbaudītu savus projektus, ieteicams analizēt operāciju vēsturi failā Gemfile.lock. Ļaunprātīga darbība izpaužas, ja ir veiktas izmaiņas ar tādu pašu nosaukumu un versiju, vai platformas maiņa (piemēram, ja pakotne xxx-1.2.3 1.2.3 ir atjaunināts uz xxx-XNUMX-xxx).

Kā risinājums pret slēpto pakotņu viltošanu nepārtrauktās integrācijas sistēmās vai publicējot projektus, Izstrādātājiem ieteicams izmantot Bundler ar opcijām “–iesaldēts” vai “–izvietojums” lai apstiprinātu atkarības.

Visbeidzot, ja jūs interesē uzzināt vairāk par to, sīkāku informāciju varat pārbaudīt šī saite.


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta.

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.