Kerentanan di io_uring memungkinkan pengguna tanpa izin untuk menjadi root bahkan dalam wadah

Baru-baru ini informasi kerentanan diungkapkan (CVE-2022-29582) dalam implementasi antarmuka I/O asinkron io_uring, yang disertakan dalam kernel Linux sejak versi 5.1, yang memungkinkan pengguna yang tidak memiliki hak untuk menjadi root pada sistem, bahkan saat menjalankan eksploit kontainer.

Perlu disebutkan itu mengatakan kerentanan dilaporkan lebih dari 3 bulan yang lalu (Sekitar awal Mei tahun ini), tetapi informasi dan pengungkapan lengkapnya baru dirilis baru-baru ini.

Mengenai kerentanan, disebutkan bahwa terjadi ketika mengakses blok memori yang sudah dibebaskan, memanifestasikan dirinya dalam kernel Linux yang dimulai dengan cabang 5.10.

Tentang kerentanan CVE-2022-29582

Kerentanan ini memungkinkan akses ke memori yang dibebaskan sebagai akibat dari kondisi balapan saat menangani batas waktu di fungsi io_flush_timeouts() , yange menghapus entri batas waktu dari daftar dan membatalkannya, tanpa memverifikasi pembuatan dan penghapusan batas waktu pada saat itu.

Deskripsi umum yang diperbarui tentang io_uring telah disediakan oleh orang lain. Mereka menjelaskannya seribu kali lebih baik daripada kami, jadi kami hanya akan membahas subsistem secara lebih luas (lihat artikel Keamanan Grapl ini dan artikel Keamanan Flatt ini untuk pengenalan yang bagus).

Yang lebih penting, bidang opcode menentukan jenis operasi apa yang harus dilakukan. Untuk setiap "opcode" yang memerlukannya, bidang fd menentukan deskriptor file untuk melakukan I/O yang diminta. Hampir semua panggilan sistem I/O normal (baca, kirim, dll.) memiliki opcode asinkron yang setara. Setiap bidang dapat mengambil peran yang berbeda tergantung pada operasinya.

Setelah diambil dari SQ, sebuah SQE diubah menjadi representasi internal yang dijelaskan oleh struct io_kiocb( kernel input/output call back). Objek-objek ini umumnya dikenal sebagai permintaan.

struct io_kiocb digunakan sebagai setara dengan "siap diluncurkan" SQE yang menjadi dasarnya, di mana deskriptor file apa pun diselesaikan ke struct file*s, kredensial pengguna dilampirkan, kepribadian (di mana inti akan berjalan), dll .

Setelah operasi yang diminta selesai, itu ditulis ke antrian penyelesaian (CQ) entri yang sesuai dengan SQE. Entri semacam itu disebut entri antrian penyelesaian (CQE) dan berisi bidang-bidang seperti kode kesalahan dan nilai hasil. Aplikasi ruang pengguna dapat polling CQ untuk entri baru untuk menentukan apakah SQE yang dikirim telah selesai diproses dan apa hasilnya.

Disebutkan bahwa ada beberapa skenario di mana mudah untuk mengganti objek pada kemajuan. Tetapi ada dua batasan:

  • LT' harus ditetapkan dan diinisialisasi di jendela balapan. Artinya, setelah LT dilepaskan tetapi sebelum mencapai titik di LT yang tidak lagi diakses.
  • LT' hanya dapat menjadi objek struct io_kiocb lainnya. Karena isolasi heap, di mana objek di heap dipisahkan menurut jenisnya, terlalu sulit untuk menetapkannya kembali sebagai jenis objek yang berbeda di dalam race window.

Para peneliti telah menyiapkan eksploitasi fungsional yang tidak memerlukan penyertaan ruang nama pengidentifikasi pengguna (ruang nama pengguna) untuk operasinya dan dapat memberikan akses root ke host ketika pengguna yang tidak memiliki hak meluncurkan eksploit dalam wadah yang terisolasi.

Eksploitasi kami menargetkan kernel versi 5.10.90, versi yang dijalankan Google dari jarak jauh saat itu. Kami harus menyesuaikan exploit kami dengan spesifikasi tertentu dari server (4 Skylake Xeon core @ 2.80Ghz, 16GiB RAM), tetapi dengan beberapa penyesuaian, setiap mesin yang menjalankan kernel yang rentan harus dapat dieksploitasi.

Eksploitasi juga berfungsi di lingkungan nsjail diisolasi pada distribusi Google COS (Container Optimized OS) berdasarkan Chromium OS dan digunakan pada Google Cloud Platform pada mesin virtual Compute Engine. Eksploitasi dirancang untuk bekerja dengan cabang kernel dari 5.10 hingga 5.12. Terakhir, perlu disebutkan bahwa masalah diperbaiki pada bulan April dalam pembaruan 5.10.111, 5.15.34 dan 5.17.3.

Terakhir, jika Anda tertarik untuk mengetahui lebih banyak tentang kerentanan, Anda dapat berkonsultasi dengan publikasi yang dibuat Di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.