CVE-2024-26766
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: IB/hfi1: sdma.h tx->num_descs bir farkla hata (off-by-one error) düzeltmesi Maalesef `fd8958efe877` commit'i, `descs` dizisinin taşmasına neden olan başka bir hataya yol açmıştır. Bu durum, `sendmsg` sistem çağrısı ile kolayca yeniden üretilebilen ek çökmelere neden olmaktadır. [ 1080.836473] general protection fault, probably for non-canonical address 0x400300015528b00a: 0000 [#1] PREEMPT SMP PTI [ 1080.869326] RIP: 0010:hfi1_ipoib_build_ib_tx_headers.constprop.0+0xe1/0x2b0 [hfi1] -- [ 1080.974535] Call Trace: [ 1080.976990] <TASK> [ 1081.021929] hfi1_ipoib_send_dma_common+0x7a/0x2e0 [hfi1] [ 1081.027364] hfi1_ipoib_send_dma_list+0x62/0x270 [hfi1] [ 1081.032633] hfi1_ipoib_send+0x112/0x300 [hfi1] [ 1081.042001] ipoib_start_xmit+0x2a9/0x2d0 [ib_ipoib] [ 1081.046978] dev_hard_start_xmit+0xc4/0x210 -- [ 1081.148347] __sys_sendmsg+0x59/0xa0 crash> ipoib_txreq 0xffff9cfeba229f00 struct ipoib_txreq { txreq = { list = { next = 0xffff9cfeba229f00, prev = 0xffff9cfeba229f00 }, descp = 0xffff9cfeba229f40, coalesce_buf = 0x0, wait = 0xffff9cfea4e69a48, complete = 0xffffffffc0fe0760 <hfi1_ipoib_sdma_complete>, packet_len = 0x46d, tlen = 0x0, num_desc = 0x0, desc_limit = 0x6, next_descq_idx = 0x45c, coalesce_idx = 0x0, flags = 0x0, descs = {{ qw = {0x8024000120dffb00, 0x4} # SDMA_DESC0_FIRST_DESC_FLAG (bit 63) }, { qw = { 0x3800014231b108, 0x4} }, { qw = { 0x310000e4ee0fcf0, 0x8} }, { qw = { 0x3000012e9f8000, 0x8} }, { qw = { 0x59000dfb9d0000, 0x8} }, { qw = { 0x78000e02e40000, 0x8} }} }, sdma_hdr = 0x400300015528b000, <<< invalid pointer in the tx request structure sdma_status = 0x0, SDMA_DESC0_LAST_DESC_FLAG (bit 62) complete = 0x0, priv = 0x0, txq = 0xffff9cfea4e69880, skb = 0xffff9d099809f400 } Bir SDMA gönderimi tam olarak 6 tanımlayıcıdan oluşuyorsa ve dword dolgusu gerektiriyorsa (7. tanımlayıcıda), sdma_txreq tanımlayıcı dizisi uygun şekilde genişletilmez ve paket kapsayıcı yapıya taşar. Bu durum, gönderim tamamlanma işlemi çalıştığında bir panik ile sonuçlanır. Panik türü, kapsayıcı yapının hangi öğelerinin bozulduğuna bağlı olarak değişir. Çözüm, tanımlayıcı dizisini genişletme ihtiyacını test etmek için _pad_sdma_tx_descs() fonksiyonunda doğru ifadenin kullanılmasıdır. Bu yama ile çökmeler artık yeniden üretilememekte ve makine kararlı çalışmaktadır.
Nasıl düzeltilir
- linux linux_kernel4.19.308, 5.4.270, 5.10.211, 5.15.150, 6.1.80, 6.6.19, 6.7.7 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 | 4.19.291 ≤ v < 4.19.308, 5.4.251 ≤ v < 5.4.270, 5.10.188 ≤ v < 5.10.211, 5.15.99 ≤ v < 5.15.150, 6.1.16 ≤ v < 6.1.80, 6.2.3 ≤ v < 6.6.19, 6.7 ≤ v < 6.7.7, 6.8 | 4.19.308, 5.4.270, 5.10.211, 5.15.150, 6.1.80, 6.6.19, 6.7.7 |
| debian debian_linux | 10.0 | — |
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.