Kerentanan dalam io_uring membenarkan pengguna tanpa kebenaran menjadi akar walaupun dalam bekas

Baru-baru ini maklumat kerentanan didedahkan (CVE-2022-29582) dalam pelaksanaan antara muka I/O asynchronous io_uring, termasuk dalam kernel Linux sejak versi 5.1, yang membenarkan pengguna yang tidak mempunyai hak untuk menjadi root pada sistem, walaupun semasa melaksanakan eksploitasi kontena.

Perlu disebutkan bahawa berkata kerentanan dilaporkan lebih 3 bulan lalu (kira-kira awal Mei tahun ini), tetapi maklumat dan pendedahan penuh hanya dikeluarkan baru-baru ini.

Mengenai kelemahan, disebutkan bahawa ini berlaku apabila mengakses blok memori yang telah dibebaskan, menunjukkan dirinya dalam kernel Linux bermula dengan cawangan 5.10.

Mengenai kerentanan CVE-2022-29582

Kerentanan ini membenarkan akses kepada memori yang dibebaskan akibat daripada keadaan perlumbaan semasa mengendalikan tamat masa dalam fungsi io_flush_timeouts(), yange mengalih keluar masukan tamat masa daripada senarai dan membatalkannya, tanpa mengesahkan penciptaan dan pemadaman tamat masa pada ketika itu.

Penerangan umum yang dikemas kini tentang io_uring telah disediakan oleh orang lain. Mereka menerangkannya seribu kali lebih baik daripada yang kami lakukan, jadi kami hanya akan merangkumi subsistem dengan lebih meluas (lihat artikel Keselamatan Grapl ini dan artikel Keselamatan Flatt ini untuk pengenalan yang hebat).

Apa yang lebih penting, medan opcode menentukan jenis operasi yang hendak dilakukan. Untuk setiap "opcode" yang memerlukannya, medan fd menentukan deskriptor fail untuk melaksanakan I/O yang diminta. Hampir semua panggilan sistem I/O biasa (baca, hantar, dll.) mempunyai opkod tak segerak yang setara. Setiap medan boleh mengambil peranan yang berbeza bergantung pada operasi.

Sebaik sahaja diambil daripada SQ, SQE ditukar kepada perwakilan dalaman yang diterangkan oleh struct io_kiocb (panggilan balik input/output kernel). Objek ini biasanya dikenali sebagai permintaan.

struct io_kiocb digunakan sebagai setara dengan "sedia-untuk-pelancaran" SQE yang menjadi asasnya, di mana mana-mana deskriptor fail diselesaikan untuk menstruktur fail*s, kelayakan pengguna dilampirkan, personaliti (di mana teras akan dijalankan), dsb. .

Selepas operasi yang diminta selesai, ia ditulis ke baris gilir penyelesaian (CQ) entri yang sepadan dengan SQE. Entri sedemikian dipanggil entri gilir pelengkap (CQE) dan mengandungi medan seperti kod ralat dan nilai hasil. Aplikasi ruang pengguna boleh meninjau CQ untuk entri baharu untuk menentukan sama ada SQE yang dihantar telah selesai diproses dan apakah keputusannya.

Disebutkan bahawa terdapat beberapa senario di mana ia adalah mudah untuk menggantikan objek mengenai kemajuan. Tetapi terdapat dua batasan:

  • LT' perlu diberikan dan dimulakan dalam tetingkap perlumbaan. Iaitu, selepas LT dikeluarkan tetapi sebelum mencapai titik dalam LT yang tidak lagi diakses.
  • LT' hanya boleh menjadi objek io_kiocb struct lain. Disebabkan pengasingan timbunan, apabila objek dalam timbunan dipisahkan mengikut jenisnya, adalah terlalu sukar untuk menetapkannya semula sebagai jenis objek yang berbeza dalam tetingkap perlumbaan.

Penyelidik telah menyediakan eksploitasi berfungsi yang tidak memerlukan kemasukan ruang nama pengecam pengguna (ruang nama pengguna) untuk operasinya dan boleh menyediakan akses root kepada hos apabila pengguna yang tidak mempunyai hak melancarkan eksploit dalam bekas terpencil.

Eksploit kami menyasarkan versi kernel 5.10.90, versi yang dijalankan oleh Google dari jauh pada masa itu. Kami terpaksa melaraskan eksploitasi kami kepada spesifikasi tertentu pelayan (4 teras Skylake Xeon @ 2.80Ghz, 16GiB RAM), tetapi dengan beberapa tweaker, mana-mana mesin yang menjalankan kernel yang terdedah harus dieksploitasi.

Eksploit juga berfungsi dalam persekitaran nsjail diasingkan pada pengedaran Google COS (OS Dioptimumkan Kontainer) berdasarkan OS Chromium dan digunakan pada Google Cloud Platform pada mesin maya Compute Engine. Eksploit direka untuk berfungsi dengan cawangan kernel dari 5.10 hingga 5.12. Akhir sekali, ia patut disebut masalah dibetulkan pada bulan April dalam kemas kini 5.10.111, 5.15.34 dan 5.17.3.

Akhir sekali, jika anda berminat untuk mengetahui lebih lanjut tentang kelemahan, anda boleh merujuk kepada penerbitan yang dibuat Dalam pautan berikut.


Tinggalkan komen anda

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

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  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.