Mereka menemui kelemahan dalam RubyGems.org yang membenarkan untuk menggantikan pakej

Baru-baru ini berita itu menyahkannya Kerentanan kritikal telah dikenal pasti dalam repositori pakej rubygems.org (kelemahan itu sudah dikatalogkan di bawah CVE-2022-29176), yang membolehkan tanpa kebenaran yang sewajarnya, menggantikan pakej orang lain dalam repositori dengan menarik pakej yang sah dan memuat naik fail lain dengan nama dan nombor versi yang sama sebagai gantinya.

Disebutkan bahawa kelemahan adalah disebabkan oleh pepijat dalam pengendali tindakan "yank"., yang menganggap bahagian nama selepas tanda sempang sebagai nama platform, yang memungkinkan untuk memulakan pengalihan keluar pakej luaran yang sepadan dengan bahagian nama sehingga aksara sempang.

Secara khusus dalam kod pengawal operasi "yank", panggilan itu 'find_by!(full_name: "#{rubygem.name}-#{slug}")' digunakan untuk mencari pakej, manakala parameter "slug" diserahkan kepada pemilik pakej untuk menentukan versi yang hendak dialih keluar.

Pemilik pakej "rails-html" boleh menetapkan "sanitizer-1.2.3" dan bukannya versi "1.2.3", yang akan menyebabkan operasi digunakan pada "rails-html-sanitizer-1.2.3" pakej ″ daripada orang lain. »

Satu nasihat keselamatan untuk Rubygems.org telah diterbitkan semalam.

Nasihat berkenaan pepijat yang membenarkan pengguna berniat jahat melombong permata tertentu dan memuat naik fail berbeza dengan nama yang sama, nombor versi dan platform berbeza.

Mari kita lihat dengan lebih mendalam untuk melihat apa yang salah semasa melalui proses pengekstrakan. Sebagai alasan, mari kita bayangkan senario di mana kita mencipta permata yang dipanggil "rails-html" dengan niat untuk mendapatkan akses tanpa kebenaran kepada permata "rails-html-sanitizer" yang digunakan secara meluas.

Disebutkan bahawa tiga syarat mesti dipenuhi, untuk berjaya mengeksploitasi kelemahan ini:

  • Serangan hanya boleh dilakukan pada paket yang mempunyai watak sempang dalam nama mereka.
  • Penyerang sepatutnya boleh meletakkan pek permata dengan sebahagian nama sehingga aksara sempang. Contohnya, jika serangan itu bertentangan dengan pakej "rails-html-sanitizer", penyerang mesti meletakkan pakej "rails-html" mereka sendiri dalam repositori.
  • Pakej yang diserang mesti telah dibuat dalam 30 hari yang lalu atau tidak dikemas kini selama 100 hari.

Masalahnya telah dikenalpasti oleh penyelidik keselamatan sebagai sebahagian daripada program hadiah HackerOne untuk mencari isu keselamatan dalam projek sumber terbuka yang diketahui.

Masalahnya ditetapkan di RubyGems.org pada 5 Mei dan menurut pemaju, masih belum mengenal pasti kesan eksploitasi daripada kelemahan dalam log selama 18 bulan yang lalu. Pada masa yang sama, hanya audit cetek telah dijalankan setakat ini dan audit yang lebih mendalam dirancang pada masa hadapan.

Pada masa ini, kami percaya bahawa kelemahan ini tidak dieksploitasi.

RubyGems.org menghantar e-mel kepada semua pemilik permata apabila versi permata dikeluarkan atau dialih keluar. Kami tidak menerima sebarang e-mel sokongan daripada pemilik permata yang menunjukkan bahawa permata mereka telah dilombong tanpa kebenaran.

Audit terhadap perubahan permata sepanjang 18 bulan lalu tidak menemui contoh penggunaan berniat jahat terhadap kerentanan ini. Pengauditan lanjut untuk sebarang kemungkinan penggunaan eksploitasi ini mendapati tiada contoh eksploitasi ini digunakan untuk mengambil alih permata tanpa kebenaran dalam sejarah RubyGems. Kami tidak boleh menjamin ia tidak pernah berlaku, tetapi nampaknya tidak mungkin.

Untuk mengesahkan projek anda, adalah disyorkan untuk menganalisis sejarah operasi dalam fail Gemfile.lock Aktiviti hasad dinyatakan dengan kehadiran perubahan dengan nama dan versi yang sama, atau pertukaran platform (contohnya, apabila pakej xxx-1.2.3 1.2.3 dikemas kini kepada xxx-XNUMX-xxx).

Sebagai penyelesaian terhadap pemalsuan pakej tersembunyi dalam sistem integrasi berterusan atau semasa menerbitkan projek, Pembangun disyorkan untuk menggunakan Bundler dengan pilihan “–frozen” atau “–deployment” untuk mengesahkan kebergantungan.

Akhirnya, sekiranya anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh menyemak butiran di pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.