Kerentanan di XFS yang memungkinkan data perangkat blok mentah dibaca

Kerentanan (CVE-2021-4155) telah diidentifikasi dalam kode sistem file XFS yang memungkinkan pengguna lokal yang tidak memiliki hak istimewa untuk membaca data blok yang tidak digunakan langsung dari perangkat blok. Semua versi utama kernel Linux yang lebih lama dari 5.16 yang berisi driver XFS terpengaruh oleh masalah ini. Perbaikan ini disertakan dalam versi 5.16, serta pembaruan kernel 5.15.14, 5.10.91, 5.4.171, 4.19.225, dll. Status pembaruan yang dihasilkan untuk memperbaiki masalah distribusi dapat dilacak di halaman berikut: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Kerentanan ini disebabkan oleh perilaku yang salah dari dua ioctl(XFS_IOC_ALLOCSP) dan ioctl(XFS_IOC_FREESP) khusus XFS, yang merupakan analog fungsional dari panggilan sistem fallocation() di seluruh kernel. Saat menambah ukuran file yang tidak selaras dengan blok, ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP tidak menyetel ulang byte ekor ke nol hingga batas blok berikutnya. Jadi, pada XFS dengan ukuran blok standar 4096 byte, penyerang dapat membaca hingga 4095 byte data tertulis sebelumnya dari setiap blok. Area ini mungkin berisi data dari file yang dihapus, file yang didefragmentasi, dan file dengan blok yang dihapus duplikatnya.

Anda dapat menguji masalah pada sistem Anda menggunakan prototipe eksploitasi sederhana. Jika, setelah menjalankan urutan perintah yang diusulkan, teks Shakespeare dapat dibaca, maka driver FS rentan. Awalnya memasang partisi XFS untuk demonstrasi memerlukan hak akses root.

Karena ioctl(XFS_IOC_ALLOCSP) dan ioctl(XFS_IOC_FREESP) secara praktis memiliki fungsi yang sama dengan fallocation() standar, dan satu-satunya perbedaannya adalah kebocoran data, keberadaannya mirip dengan pintu belakang. Meskipun ada kebijakan umum untuk tidak mengubah antarmuka yang ada di kernel, atas saran Linus, diputuskan untuk menghapus ioctl ini sepenuhnya di versi berikutnya.

Sumber: opennet.ru

Tambah komentar