CVE-2026-90125
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: smb: client: smb2_new_read_req() fonksiyonundaki istek tamponu sızıntısı düzeltildi smb2_new_read_req(), istek tamponunu smb2_plain_req_init() ile ayırır ancak bunu yalnızca fonksiyonun en sonunda *buf = req ile çağırana bildirir. Bu iki işlem arasında iki hata dönüşü bulunmaktadır: rc = smb2_plain_req_init(SMB2_READ, io_parms->tcon, server, (void **) &req, total_len); if (rc) return rc; if (server == NULL) return -ECONNABORTED; [...] rdata->mr = smbd_register_mr(server->smbd_conn, &rdata->subreq.io_iter, true, need_invalidate); if (!rdata->mr) return -EAGAIN; Bu hatalardan herhangi biri gerçekleştiğinde tampon ne serbest bırakılır ne de geri verilir, bu nedenle sızıntı oluşur. Çağıran taraf temizleme işlemini gerçekleştiremez: smb2_async_readv(), sıfırdan farklı bir dönüşte 'goto out' yapar ve bu durum async_readv_out kısmındaki cifs_small_buf_release(buf) işlemini atlar; ayrıca her durumda o noktada buf henüz atanmamıştır. Yazma yolu hiçbir zaman bu soruna sahip olmamıştır. smb2_async_writev(), bellek bölgesini satır içi olarak kaydeder ve dönmek yerine serbest bırakma etiketine atlar: wdata->mr = smbd_register_mr(...); if (!wdata->mr) { rc = -EAGAIN; goto async_writev_out; } b7972092199f ("cifs: smbd: Retry on memory registration failure") commit'i, tek bir yama ile her iki tarafı da -ENOBUFS değerinden -EAGAIN değerine değiştirerek bu iki yapıyı yan yana getirmiştir. Pratikte yalnızca -EAGAIN dönüşüne ulaşılabilir çünkü smb2_plain_req_init() önce smb2_reconnect() fonksiyonunu çağırır ve server NULL olduğunda herhangi bir tahsis yapılmadan önce zaten -EIO ile hata verir. Birinin tesadüfen doğru kalması yerine, burada her iki dönüşe de aynı işlem uygulanmıştır. -EAGAIN tekrarlanabilir bir hata olduğu için, hata smb2_async_readv()'nin sonundaki yeniden deneme bloğuna da ulaşır ve alt isteği NETFS_SREQ_NEED_RETRY olarak işaretler; böylece başarısız olan bir kayıt işlemi G/Ç işlemini sonlandırmak yerine yeniden denenebilir ve buna ulaşan her girişim başka bir tampon sızıntısına yol açar. smb2_should_replay() tcon->retry üzerinden kısa devre yaptığı için, sabit bir bağlamada (hard mount) deneme sayısı retrans ayarı ile sınırlandırılmaz. Yalnızca asenkron okuma yolu etkilenmektedir. Senkron SMB2_read() çağırıcısı rdata == NULL gönderir ve bellek kayıt bloğu rdata üzerinden korunur. Bellek kayıt hatası yolu, Sashiko AI inceleyicisi tarafından smb2_async_readv() ile ilgili ilgisiz bir yama incelenirken tespit edilmiştir.
Nasıl düzeltilir
- Linux Linux38daae149c2102d96833cc6acd79c8f98fcce208, 58066940076b90c16e821fd6f9767cd979cbdb5e, 12092ed28434bf41e08d41e3c5269eb6b337fc02, 442c5f1358ced0d4e716778ac06f1e323a7e4f21, 73f6bdb0380486ab37fe12cd74de20abfaf5d3ae, deb6468f4164640e4dc875f008aa449cf55987a5 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | bd3dcc6a22a9186ed78da51ce09e889803552189 ≤ v < 38daae149c2102d96833cc6acd79c8f98fcce208, bd3dcc6a22a9186ed78da51ce09e889803552189 ≤ v < 58066940076b90c16e821fd6f9767cd979cbdb5e, bd3dcc6a22a9186ed78da51ce09e889803552189 ≤ v < 12092ed28434bf41e08d41e3c5269eb6b337fc02, bd3dcc6a22a9186ed78da51ce09e889803552189 ≤ v < 442c5f1358ced0d4e716778ac06f1e323a7e4f21, bd3dcc6a22a9186ed78da51ce09e889803552189 ≤ v < 73f6bdb0380486ab37fe12cd74de20abfaf5d3ae, bd3dcc6a22a9186ed78da51ce09e889803552189 ≤ v < deb6468f4164640e4dc875f008aa449cf55987a5, 4.16 | 38daae149c2102d96833cc6acd79c8f98fcce208, 58066940076b90c16e821fd6f9767cd979cbdb5e, 12092ed28434bf41e08d41e3c5269eb6b337fc02, 442c5f1358ced0d4e716778ac06f1e323a7e4f21, 73f6bdb0380486ab37fe12cd74de20abfaf5d3ae, deb6468f4164640e4dc875f008aa449cf55987a5 |
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.