CVE-2024-49888
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: bpf: Bir sdiv taşma sorunu düzeltildi Zac Ecob, bir bpf programının aşağıdaki hata nedeniyle çekirdek çökmesine yol açabildiği bir sorun bildirmiştir: Oops: divide error: 0000 [#1] PREEMPT SMP KASAN PTI Hata, aşağıdaki işaretli bölme işleminden kaynaklanmaktadır: LLONG_MIN/-1 (burada LLONG_MIN -9,223,372,036,854,775,808 değerine eşittir). LLONG_MIN/-1 işleminin pozitif bir sayı olan 9,223,372,036,854,775,808 sonucunu vermesi beklenir ancak 64 bit sistemler için maksimum pozitif sayı 9,223,372,036,854,775,807 olduğundan bu imkansızdır. x86_64 üzerinde LLONG_MIN/-1 işlemi bir çekirdek istisnasına (exception) neden olur. arm64 üzerinde ise LLONG_MIN/-1 işleminin sonucu LLONG_MIN'dir. Yapılan daha detaylı incelemelerde, bpf programı x86_64 platformunda çalışırken aşağıdaki tüm sdiv/smod durumlarının bir istisna tetikleyebileceği tespit edilmiştir: - 64 bit işlem için LLONG_MIN/-1 - 32 bit işlem için INT_MIN/-1 - 64 bit işlem için LLONG_MIN%-1 - 32 bit işlem için INT_MIN%-1 Burada -1 değeri bir sabit (immediate) veya bir yazmaçta (register) olabilir. arm64 üzerinde herhangi bir istisna oluşmamaktadır: - LLONG_MIN/-1 = LLONG_MIN - INT_MIN/-1 = INT_MIN - LLONG_MIN%-1 = 0 - INT_MIN%-1 = 0 Burada -1 değeri bir sabit veya bir yazmaçta olabilir. Yukarıdaki durumları yönetmek için talimat yamalaması (insn patching) gerekmiş ve yamalanmış kodlar yukarıdaki arm64 sonuçlarıyla uyumlu sonuçlar üretmiştir. Aşağıdakiler, bölenin bir yazmaçta saklandığı durumlarda hem -1 hem de 0 bölenlerini içeren sdiv/smod istisnalarını yönetmek için kullanılan sözde kodlardır. sdiv: tmp = rX tmp += 1 /* [-1, 0] -> [0, 1] if tmp >(unsigned) 1 goto L2 if tmp == 0 goto L1 rY = 0 L1: rY = -rY; goto L3 L2: rY /= rX L3: smod: tmp = rX tmp += 1 /* [-1, 0] -> [0, 1] if tmp >(unsigned) 1 goto L1 if tmp == 1 (is64 ? goto L2 : goto L3) rY = 0; goto L2 L1: rY %= rX L2: goto L4 // sadece !is64 durumunda L3: wY = wY // sadece !is64 durumunda L4: [1] https://lore.kernel.org/bpf/tPJLTEh7S_DxFEqAI2Ji5MBSoZVg7_G-Py2iaZpAaWtM961fFTWtsnlzwvTbzBzaUzwQAoNATXKUlt0LZOFgnDcIyKCswAnAGdUF3LBrhGQ=@protonmail.com/
Nasıl düzeltilir
- linux linux_kernel6.10.14, 6.11.3 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 | v < 6.10.14, 6.11 ≤ v < 6.11.3 | 6.10.14, 6.11.3 |
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.