Kerentanan dalam cryptsetup yang membolehkan anda melumpuhkan penyulitan dalam partition LUKS2

Kerentanan (CVE-2021-4122) telah dikenal pasti dalam pakej Cryptsetup, digunakan untuk menyulitkan partition cakera dalam Linux, yang membenarkan penyulitan dilumpuhkan pada partition dalam format LUKS2 (Linux Unified Key Setup) dengan mengubah suai metadata. Untuk mengeksploitasi kelemahan, penyerang mesti mempunyai akses fizikal kepada media yang disulitkan, i.e. Kaedah ini masuk akal terutamanya untuk menyerang peranti storan luaran yang disulitkan, seperti pemacu Flash, yang penyerang mempunyai akses tetapi tidak mengetahui kata laluan untuk menyahsulit data.

Serangan itu hanya terpakai untuk format LUKS2 dan dikaitkan dengan manipulasi metadata yang bertanggungjawab untuk mengaktifkan sambungan "penyulitan semula dalam talian", yang membolehkan, jika perlu menukar kunci akses, untuk memulakan proses penyulitan semula data dengan cepat. tanpa berhenti bekerja dengan partition. Memandangkan proses penyahsulitan dan penyulitan dengan kunci baharu mengambil banyak masa, "penyulitan semula dalam talian" membolehkan anda tidak mengganggu kerja dengan partition dan melakukan penyulitan semula di latar belakang, menyulitkan semula data secara beransur-ansur dari satu kunci ke kunci yang lain. . Ia juga mungkin untuk memilih kunci sasaran kosong, yang membolehkan anda menukar bahagian itu ke dalam bentuk yang dinyahsulit.

Penyerang boleh membuat perubahan pada metadata LUKS2 yang mensimulasikan pengguguran operasi penyahsulitan akibat kegagalan dan mencapai penyahsulitan sebahagian daripada partition selepas pengaktifan dan penggunaan pemacu yang diubah suai oleh pemilik. Dalam kes ini, pengguna yang telah menyambungkan pemacu yang diubah suai dan membuka kuncinya dengan kata laluan yang betul tidak menerima sebarang amaran tentang proses memulihkan operasi penyulitan semula yang terganggu dan hanya boleh mengetahui tentang kemajuan operasi ini menggunakan "luks Dump" perintah. Jumlah data yang boleh dinyahsulit oleh penyerang bergantung pada saiz pengepala LUKS2, tetapi pada saiz lalai (16 MiB) ia boleh melebihi 3 GB.

Masalahnya disebabkan oleh fakta bahawa walaupun penyulitan semula memerlukan pengiraan dan pengesahan cincang bagi kunci baharu dan lama, cincang tidak diperlukan untuk memulakan penyahsulitan jika keadaan baharu membayangkan ketiadaan kunci teks biasa untuk penyulitan. Di samping itu, metadata LUKS2, yang menentukan algoritma penyulitan, tidak dilindungi daripada pengubahsuaian jika ia jatuh ke tangan penyerang. Untuk menyekat kelemahan, pembangun menambahkan perlindungan tambahan untuk metadata kepada LUKS2, yang mana cincangan tambahan kini disemak, dikira berdasarkan kunci yang diketahui dan kandungan metadata, i.e. penyerang tidak lagi boleh menukar metadata secara diam-diam tanpa mengetahui kata laluan penyahsulitan.

Senario serangan biasa memerlukan penyerang boleh mendapatkan tangan mereka pada pemacu beberapa kali. Pertama, penyerang yang tidak mengetahui kata laluan akses membuat perubahan pada kawasan metadata, mencetuskan penyahsulitan sebahagian data pada kali seterusnya pemacu diaktifkan. Pemacu kemudian dikembalikan ke tempatnya dan penyerang menunggu sehingga pengguna menyambungkannya dengan memasukkan kata laluan. Apabila peranti diaktifkan oleh pengguna, proses penyulitan semula latar belakang dimulakan, di mana sebahagian daripada data yang disulitkan digantikan dengan data yang disulitkan. Selanjutnya, jika penyerang berjaya mendapatkan peranti itu semula, beberapa data pada pemacu akan berada dalam bentuk yang dinyahsulit.

Masalahnya telah dikenal pasti oleh penyelenggara projek cryptsetup dan diperbaiki dalam kemas kini cryptsetup 2.4.3 dan 2.3.7. Status kemas kini yang dijana untuk menyelesaikan masalah dalam pengedaran boleh dijejaki pada halaman ini: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Kerentanan hanya muncul sejak keluaran cryptsetup 2.2.0, yang memperkenalkan sokongan untuk operasi "penyulitan semula dalam talian". Sebagai penyelesaian untuk perlindungan, pelancaran dengan pilihan "--disable-luks2-reencryption" boleh digunakan.

Sumber: opennet.ru

Tambah komen