CVE-2026-74714

Yüksek

Açıklama

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: bpf: tcp: bpf_iter_tcp_established_batch() içindeki serbest bırakıldıktan sonra kullanım hatasını düzelt reqsk_queue_hash_req(), TCP_NEW_SYN_RECV durumundaki bir request_sock'u ehash zincirine yayınlar, bucket kilidini bırakır ve ancak bundan sonra rsk_refcnt değerini 3 olarak ayarlar. __inet_lookup_established() gibi kilitsiz okuyucular bunu refcount_inc_not_zero() ile ele alır, ancak bpf_iter_tcp_established_batch() bucket kilidini tutarken kilidin sk_refcnt > 0 olmasını garanti ettiği varsayımıyla düz sock_hold() kullanır. Bu varsayım request_sock için geçerli değildir: CPU 0 CPU 1 ----- ----- tcp_conn_request() reqsk_queue_hash_req() inet_ehash_insert(req) spin_lock(bucket) __sk_nulls_add_node_rcu(req) // rsk_refcnt == 0 spin_unlock(bucket) bpf_iter_tcp_established_batch() spin_lock(bucket) sock_hold(req) <-- 0 üzerinde toplama spin_unlock(bucket) refcount_set(&req->rsk_refcnt, 3) // doymuş değerin üzerine yazar bu da şu şekilde ortaya çıkar: refcount_t: addition on 0; use-after-free. WARNING: lib/refcount.c:25 at refcount_warn_saturate+0x48/0x90, CPU#1 Call Trace: bpf_iter_tcp_established_batch+0x14e/0x170 bpf_iter_tcp_batch+0x53/0x200 bpf_iter_tcp_seq_next+0x27/0x70 bpf_seq_read+0x107/0x410 vfs_read+0xb9/0x380 Yayınlayan CPU'nun refcount_set() çağrısı sayacın üzerine yazdığında yineleyicinin çaldığı referans kaybolur ve soket bir referans eksik kalır. Son meşru sahip referansını bıraktığında reqsk hâlâ erişilebilir durumdayken serbest bırakılır ve serbest bırakıldıktan sonra kullanım hatasına yol açar. Bu durum tcp_syncookies=0 ile, birkaç iş parçacığı yerel bir dinleyiciye connect()/close() yaparken diğerleri sıkı bir döngüde iter/tcp bağlantısını okuduğunda saniyeler içinde yeniden üretilir. refcount_inc_not_zero() kullanın ve başarısızlık durumunda soketi atlayın. Atlanan bir soket hâlâ bucket'ın parçasıdır, bu nedenle expected içinde sayılmaya devam edin. Yeniden tahsisler expected boyutuna göre yapılır ve son yeniden tahsis boyunca kilit tutulurken refcount'u yayınlanan bir request sock'un zaten yeri olmalıdır. Atlanan bir soket expected içinde sayılır ancak hiçbir zaman toplu işleme alınmaz, bu nedenle gerçekte tamamlanmış bir toplu işlemde end_sk expected'den küçük olabilir. Tamamlanmışlığa, yürüyüşün geride herhangi bir soket bırakıp bırakmadığına bakarak karar verin. Kilitli yeniden tahsis sonrasındaki WARN da aynı şeyi denetler; bu, commit cdec67a489d4 ("bpf: tcp: Make sure iter->batch always contains a full bucket snapshot") itibarıyla o yolda geçerli olamayacak bir end_sk == expected denetiminin yerini alır. Bir bucket'taki eşleşen her soket başlatma ortasındaysa (refcount 0), end_sk 0 olarak kalır. Bu turda hiç doldurulmamış bir toplu işlem girdisi döndürmek yerine bir sonraki bucket'a ilerleyin.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux
Yayın22 Ağu 2026
İlk görülme22 Ağu 2026

Nasıl düzeltilir

Güncelleyin
  • Linux Linuxcc0295f89296ed351fc4b0b48fee887ba02c5d24, ddbe966b5d1fe212ada749bc3d0b410f1a7dea74, 7d2b60a4bc0499f62ff8520af6309bbe170882fd, cefcbbe20846a45f9a7dae868f7ef1000953e2df, 97e74d3e45d653c07c2d406fc530a9bbe3df8396, e5fd3f514e27db1f05fbd72ba615d74941e23c51 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Linux Linux04c7820b776f1c4b48698574c47de9e940d368e8 ≤ v < cc0295f89296ed351fc4b0b48fee887ba02c5d24, 04c7820b776f1c4b48698574c47de9e940d368e8 ≤ v < ddbe966b5d1fe212ada749bc3d0b410f1a7dea74, 04c7820b776f1c4b48698574c47de9e940d368e8 ≤ v < 7d2b60a4bc0499f62ff8520af6309bbe170882fd, 04c7820b776f1c4b48698574c47de9e940d368e8 ≤ v < cefcbbe20846a45f9a7dae868f7ef1000953e2df, 04c7820b776f1c4b48698574c47de9e940d368e8 ≤ v < 97e74d3e45d653c07c2d406fc530a9bbe3df8396, 04c7820b776f1c4b48698574c47de9e940d368e8 ≤ v < e5fd3f514e27db1f05fbd72ba615d74941e23c51, 5.15cc0295f89296ed351fc4b0b48fee887ba02c5d24, ddbe966b5d1fe212ada749bc3d0b410f1a7dea74, 7d2b60a4bc0499f62ff8520af6309bbe170882fd, cefcbbe20846a45f9a7dae868f7ef1000953e2df, 97e74d3e45d653c07c2d406fc530a9bbe3df8396, e5fd3f514e27db1f05fbd72ba615d74941e23c51

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.

Intelligence 360 paketinde

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.