CVE-2023-53045
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: usb: gadget: u_audio: kullanıcı alanının sürücü ayırmasını (unbind) engellemesine izin vermeyin f_uac1 ve f_uac2 için unbind geri çağırmasında, g_audio_cleanup() aracılığıyla yapılan bir snd_card_free() çağrısı kartın bağlantısını kesecek ve ardından tüm kaynakların serbest bırakılmasını bekleyecektir; bu işlem referans sayacı sıfıra düştüğünde gerçekleşir. Kullanıcı alanı, ilgili dosya tanımlayıcıyı kapatmayarak referans sayacını artırılmış halde tutabildiği için, unbind çağrısı süresiz olarak bloke olabilir. Bu durum, makinemde gözlemlenen aşağıdaki bloke olmuş görev örneğinde olduğu gibi, yeniden başlatma sırasında bir kilitlenmeye (deadlock) neden olabilir: task:reboot state:D stack:0 pid:2827 ppid:569 flags:0x0000000c Call trace: __switch_to+0xc8/0x140 __schedule+0x2f0/0x7c0 schedule+0x60/0xd0 schedule_timeout+0x180/0x1d4 wait_for_completion+0x78/0x180 snd_card_free+0x90/0xa0 g_audio_cleanup+0x2c/0x64 afunc_unbind+0x28/0x60 ... kernel_restart+0x4c/0xac __do_sys_reboot+0xcc/0x1ec __arm64_sys_reboot+0x28/0x30 invoke_syscall+0x4c/0x110 ... Sorun ayrıca, kartın arecord ile açılması ve ardından ayırma işlemi yapılmadan önce işlemin kabuk üzerinden durdurulmasıyla da gözlemlenebilir: # arecord -D hw:UAC2Gadget -f S32_LE -c 2 -r 48000 /dev/null Recording WAVE '/dev/null' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo ^Z[1]+ Stopped arecord -D hw:UAC2Gadget -f S32_LE -c 2 -r 48000 /dev/null # echo gadget.0 > /sys/bus/gadget/drivers/configfs-gadget/unbind (unbind komutunun hiçbir zaman tamamlanmadığı gözlemlenir) Problem, bunun yerine snd_card_free_when_closed() kullanılarak çözülmüştür; bu fonksiyon kartın bağlantısını istenildiği gibi kesmeye devam edecek ancak kaynakları serbest bırakma görevini, kullanıcı alanı dosya tanımlayıcısını kapattığında çekirdek merkezine erteleyecektir.
Nasıl düzeltilir
- linux linux_kernel4.14.312, 4.19.280, 5.4.240, 5.10.177, 5.15.105, 6.1.22, 6.2.9 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 3.4 ≤ v < 4.14.312, 4.15 ≤ v < 4.19.280, 4.20 ≤ v < 5.4.240, 5.5 ≤ v < 5.10.177, 5.11 ≤ v < 5.15.105, 5.16 ≤ v < 6.1.22, 6.2 ≤ v < 6.2.9, 6.3 | 4.14.312, 4.19.280, 5.4.240, 5.10.177, 5.15.105, 6.1.22, 6.2.9 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.