← CVE Veritabanı

CVE-2026-74751

Kritik

Teknik Veri (Otomatik)

CVSS Skoru
9.4
EPSS
0.3%
CWE
—
KEV Durumu
Hayır

Yayım tarihi: 26 Ağustos 2026

Linux çekirdeğinde aşağıdaki güvenlik açığı çözülmüştür: riscv: lib: ZBB strnlen'in sayacı aşan okumalarını düzeltme ZBB-optimizeli strnlen döngüsü, hizalı sınırı kontrol etmeden önce bir kelime ilerisini yükler: REG_L t1, SZREG(t0) // bir sonraki kelimeyi yükle addi t0, t0, SZREG // ilerle orc.b t1, t1 bgeu t0, t4, 4f // sınır kontrolü YÜKLEME SONRASI burada t4 = (s + count) & -SZREG'dir. s hizalı ve count SZREG'nin katı ise, t4 s + count'a eşit olur ve döngü tam olarak s + count'dan başlayan bir kelimeyi yükler. Eğer s + count bir sayfa sınırına düşer ve bir sonraki sayfa eşlenmemişse, bu durum bir hata oluşturur. Çözüm, s + count yerine son geçerli baytın (s + count - 1) hizalı sınırını hesaplamaktan geçer. Bu, döngüyü son geçerli baytın içinde bulunan kelimenin sonuna değil, potansiyel olarak onu takip eden kelimeyi yüklemekten durdurur. count == 0 durumu zaten beqz erken çıkış tarafından ele alınmıştır. Ayrıca, tüm geçerli baytların ilk kelime içinde yer aldığı durum için bir öncül koruma (bgeu t0, t4) eklenmiştir. Ayarlanmış sınır ile, t4 t0'ya eşit olabilir ve ilk kelime işleminin eski kayıt durumu ile döngüye girilmesi yanlış sonuçlar üretecektir. Son minu sınırlaması, son yüklenen kelimenin aynı hizalı kelime içinde s + count - 1'i aştığı durumlarda sonuçların hala doğru olmasını sağlar.

Orijinal açıklama (İngilizce)

In the Linux kernel, the following vulnerability has been resolved: riscv: lib: Fix ZBB strnlen reading past count boundary The ZBB-optimized strnlen loop loads one word ahead before checking the aligned boundary: REG_L t1, SZREG(t0) // load next word addi t0, t0, SZREG // advance orc.b t1, t1 bgeu t0, t4, 4f // boundary check AFTER load where t4 = (s + count) & -SZREG. When s is aligned and count is a multiple of SZREG, t4 equals s + count and the loop loads a full word starting at exactly s + count. If s + count falls on a page boundary with the next page unmapped, this faults. Fix by computing the aligned boundary from the last valid byte (s + count - 1) instead of s + count. This makes the loop stop at the word containing the last valid byte rather than potentially loading the word after it. The count == 0 case is already handled by the beqz early exit. Also add a pre-loop guard (bgeu t0, t4) for the case where all valid bytes fit within the first word. With the adjusted boundary, t4 can equal t0, and entering the loop with stale register state from the first-word processing would produce incorrect results. The final minu clamp ensures the result is still correct when the last loaded word extends past s + count - 1 within the same aligned word.

Bu CVE için henüz editoryal inceleme yapılmadı. Sadece otomatik teknik veri gösteriliyor.