Mereka mengesan kelemahan dalam ksmbd dalam Linux Kernel

kelemahan

Jika dieksploitasi, kelemahan ini boleh membenarkan penyerang mendapat akses tanpa kebenaran kepada maklumat sensitif atau secara amnya menyebabkan masalah

Maklumat telah dikeluarkan baru-baru ini kelemahan kernel Linux telah ditemui dengan skor CVSS 10 pada pelayan SMB, memberikan pengguna yang tidak disahkan keupayaan untuk melaksanakan kod dari jauh.

Pepijat yang ditemui membolehkan penyerang jauh melaksanakan kod sewenang-wenangnya pada pemasangan yang terjejas. Pengesahan tidak diperlukan untuk mengeksploitasi kelemahan ini, tetapi hanya sistem yang didayakan ksmbd sahaja yang terdedah.

Kepincangan khusus wujud dalam pemprosesan arahan SMB2_TREE_DISCONNECT. Masalah berpunca daripada tidak mengesahkan bahawa objek wujud sebelum melakukan operasi pada objek tersebut. Penyerang boleh mengeksploitasi kelemahan ini untuk melaksanakan kod dalam konteks kernel.

BUTIRAN KERENDAHAN
Kerentanan ini membolehkan penyerang jauh melaksanakan kod sewenang-wenangnya pada pemasangan Kernel Linux yang terjejas. Pengesahan tidak diperlukan untuk mengeksploitasi kelemahan ini, tetapi hanya sistem yang didayakan ksmbd sahaja yang terdedah.

Kelemahan khusus wujud dalam pemprosesan arahan SMB2_TREE_DISCONNECT. Masalahnya disebabkan oleh kekurangan pengesahan kewujudan objek sebelum melakukan operasi pada objek. Penyerang boleh mengeksploitasi kelemahan ini untuk melaksanakan kod dalam konteks kernel.

Disebutkan bahawa bergantung pada jenis permintaan SMB, setiap utas baharu boleh memutuskan untuk menghantar arahan kepada ruang pengguna (ksmbd.mountd); pada masa ini, arahan DCE/RPC dikenal pasti untuk dikendalikan oleh ruang pengguna. Untuk menggunakan kernel Linux dengan lebih baik, ia telah memutuskan untuk menganggap arahan sebagai item kerja dan melaksanakannya dalam pengendali benang ksmbd -io kworker.

Ini membolehkan pengurus melakukan pemultipleksan kerana kernel menguruskan memulakan benang pekerja tambahan jika beban meningkat dan sebaliknya, jika beban berkurangan, ia membunuh benang pekerja tambahan.

Apabila daemon pelayan bermula, ia memulakan utas garpu (ksmbd/nama antara muka) pada masa but dan membuka port khusus 445 untuk mendengar permintaan SMB. Setiap kali pelanggan baharu membuat permintaan, utas forker menerima sambungan pelanggan dan mencipta utas baharu untuk saluran komunikasi khusus antara pelanggan dan pelayan. Ini membolehkan permintaan (perintah) SMB daripada pelanggan diproses secara selari dan membolehkan pelanggan baharu mewujudkan sambungan baharu.

ksmbd menaikkan bendera merah di kalangan beberapa pengguna yang membincangkan penggabungan mereka tahun lepas. SerNet, sebuah syarikat komputer Jerman yang menawarkan versi Sambanya sendiri, berkata dalam catatan blog bahawa ksmbd adalah hebat, tetapi kelihatan agak tidak matang. Selain itu, pasukan Samba+ SerNet menyatakan dalam catatan blog bahawa nilai menambah pelayan SMB ke ruang kernel mungkin tidak berbaloi dengan risiko "memerah prestasi terakhir daripada barangan yang tersedia."

Nasib baik, jika anda tidak menjalankan modul ksmbd "eksperimen" Samsung, seperti yang diterangkan oleh penyelidik keselamatan Shir Tamari di Twitter, dan telah menyimpan Samba, anda selamat dengan sempurna. “ksmbd adalah baharu; kebanyakan pengguna masih menggunakan Samba dan tidak terjejas. Pada asasnya, jika anda tidak menjalankan pelayan SMB dengan ksmbd, nikmati hujung minggu anda," tweet Tamari.

Menurut Inisiatif Sifar Hari, yang mendedahkan kelemahan ksmbd, kelemahan bebas penggunaan wujud dalam pemprosesan arahan SMB2_TREE_DISCONNECT. Menurut ZDI, masalah itu disebabkan oleh ksmbd tidak mengesahkan kewujudan objek sebelum melakukan operasi ke atasnya.

Bagi mereka yang menggunakan ksmbd, terdapat penyelesaian selain beralih kepada Samba: naik taraf kepada kernel Linux versi 5.15.61, dikeluarkan pada bulan Ogos atau lebih baru. Kemas kini kernel ini juga membetulkan beberapa isu lain dalam ksmbd: bacaan di luar sempadan untuk SMB2_TREE_CONNECT, yang menurut nota tampalan boleh membenarkan permintaan yang tidak sah untuk tidak menghantar mesej, dan kebocoran memori dalam smb2_handle_negotiate menyebabkan pembebasan yang salah. ingatan.

akhirnya jika anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh menyemak perinciannya Dalam pautan berikut.