Mereka mendeteksi kerentanan di firejail yang memungkinkan akses root ke sistem

Mereka baru-baru ini merilis berita bahwa kerentanan teridentifikasi (sudah terdaftar di bawah CVE-2022-31214) di alat sandbox aplikasi Firejail, dirinci bahwa cacat yang terdeteksi dapat memungkinkan pengguna lokal menjadi root pada sistem host.

Firejail menggunakan mekanisme namespace, AppArmor, dan pemfilteran panggilan sistem (seccomp-bpf) di Linux untuk isolasi, tetapi memerlukan hak istimewa yang lebih tinggi untuk mengonfigurasi rilis terisolasi, yang diperoleh dengan mengikat ke utilitas flag root suid atau dijalankan dengan sudo.

Kerentanan ini disebabkan oleh kesalahan dalam logika opsi “–join=" », dirancang untuk terhubung ke lingkungan terisolasi yang sudah berjalan (mirip dengan perintah login untuk lingkungan kotak pasir) dengan lingkungan yang ditentukan oleh ID proses yang berjalan di dalamnya. Pada fase pra-peluncuran, firejail mendeteksi hak istimewa dari proses yang ditentukan dan menerapkannya ke proses baru yang bergabung dengan lingkungan dengan opsi “–join”.

Sebelum menghubungkan, memeriksa apakah proses yang ditentukan sedang berjalan di lingkungan firejail. Pemeriksaan ini mengevaluasi keberadaan file /run/firejail/mnt/join. Untuk mengeksploitasi kerentanan, penyerang dapat mensimulasikan lingkungan firejail fiktif yang tidak terisolasi menggunakan mount namespace dan kemudian menghubungkannya menggunakan opsi “–join”.

Jika konfigurasi tidak mengaktifkan mode larangan memperoleh hak istimewa tambahan dalam proses baru (prctl NO_NEW_PRIVS), firejail akan menghubungkan pengguna ke lingkungan fiktif dan mencoba menerapkan konfigurasi namespace pengguna dari pengidentifikasi pengguna (pengguna namespace) dari proses init ( PID 1).

Sebagian besar logika di balik fungsi gabung ada di kode sumber dari file `src/firejail/join.c`. Bagian penting dari kode dieksekusi dengan hak istimewa yang ditinggikan (UID efektif 0). ID dari proses yang diberikan sebagai perintah argumen garis diperiksa untuk menentukan apakah itu rwadah dan tentukan beberapa sifat-sifatnya yang Ini juga berlaku untuk proses entri baru.

Kriteria utama untuk memutuskan apakah akan bergabung dengan proses target berhasil adalah keberadaan file di mount namespace target, proses ditemukan di /run/firejail/mnt/join. Verifikasi ini dilakukan pada ffungsi `is_ready_for_join()`. File dibuka menggunakan lTanda `O_RDONLY|O_CLOEXEC` dan hasil penelusuran `fstat()` harus memenuhi persyaratan berikut:

– file harus berupa file biasa.
– file harus dimiliki oleh userid 0 (seperti yang terlihat dari pengguna awal
ruang nama).
– file harus berukuran 1 byte.

Sebagai hasilnya, proses yang terhubung melalui "firejail --join" akan berakhir di namespace ID pengguna asli pengguna dengan hak istimewa yang tidak berubah, tetapi di ruang titik mount yang berbeda, sepenuhnya dikendalikan oleh penyerang.

Shell "bergabung" yang dihasilkan sekarang akan hidup di pengguna awal
namespace, namun tetap mempertahankan hak pengguna normal asli mount namespace akan menjadi yang dikendalikan oleh penyerang. Sebagai
konfigurasi noneprivs belum diterapkan, penyerang sekarang dapat
jalankan program setuid-root dalam namespace mount ini

Secara khusus, penyerang dapat mengeksekusi program setuid-root di ruang titik mount yang dibuatnya, memungkinkannya untuk, misalnya, mengubah konfigurasi /etc/sudoers atau parameter PAM dalam hierarki filenya dan mendapatkan kemampuan untuk menjalankan perintah sebagai root menggunakan sudo atau utilitasnya.

Terakhir, perlu disebutkan bahwa eksploitasi fungsional telah dikembangkan, diuji pada versi openSUSE, Debian, Arch, Gentoo dan Fedora saat ini dengan utilitas firejail terinstal.

Masalah telah diperbaiki di firejail versi 0.9.70. Sebagai perbaikan keamanan, Anda dapat mengatur konfigurasi (/etc/firejail/firejail.config) ke "no join" dan "force-nonewprivs yes".

Akhirnya jika Anda tertarik untuk mengetahui lebih banyak tentangnya, Anda dapat memeriksa detailnya di link berikut.


tinggalkan Komentar Anda

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

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  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.