Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • Son 7 gün

CVE-2026-99042

Linux çekirdeğinde io_uring CONNECT filtresi 24 baytlık sockaddr_in6 için IPv6 port ve adres alanlarını doldurmuyor

Linux

Yüksek 8,4 CVSS 3.1
Yayımlandı
Güncellendi
24 Eki 2026
Açık yaşı
5 gün
Kaydı açan
Linux

ÖzetTürkçe

Linux çekirdeğinde io_uring/net bileşeni, AF_INET6 için CONNECT filtre alanlarını yalnızca addr_len değeri en az sizeof(struct sockaddr_in6), yani 28 bayt olduğunda dolduruyor. Ancak IPv6 bağlantı yolları SIN6_LEN_RFC2133 (24 bayt) boyutunu da kabul ediyor; bu boyutta sin6_port ve sin6_addr zaten mevcut. io_connect addr_len değerini soket katmanına değiştirmeden iletiyor. addr_len 24 olduğunda filtre, ailenin AF_INET6 olduğunu ancak port ve adresin sıfır olduğunu görüyor; oysa çekirdek gerçek hedefe bağlanıyor. IPv6 portunu veya adresini engelleyen bir filtre bu nedenle atlatılabiliyor. Örneğin connect.port == P engeli, addr_len 28 ile [::1]:P adresine bağlantıyı -EACCES hatasıyla reddederken, addr_len 24 ile bağlantıya izin veriyor. Düzeltme, eşik değer olarak SIN6_LEN_RFC2133 kullanıyor; sin6_scope_id alanı yoksa sıfır kalıyor. Eşik uyuşmazlığı, bir yapay zekâ kodlama asistanı (Claude Code) tarafından, bu kancanın net/ipv6 uzunluk denetimleriyle karşılaştırılması sırasında bulunmuş; yama ve yeniden üretme kodu da bu asistan tarafından hazırlanmış. Açık, 7.3-rc6 sürümünde bir sanal makinede doğrulanmış ve 7.2 sürümünde aynı kodun bulunduğu teyit edilmiştir.

Kaynaktaki açıklama (İngilizce)

In the Linux kernel, the following vulnerability has been resolved:

io_uring/net: populate CONNECT filter fields for 24-byte sockaddr_in6

io_connect_bpf_populate() fills connect.port and connect.v6_addr for
AF_INET6 only when addr_len >= sizeof(struct sockaddr_in6), i.e. 28
bytes.

The IPv6 connect paths accept SIN6_LEN_RFC2133 (24 bytes), which
already holds sin6_port and sin6_addr. io_connect() passes addr_len to
the socket layer unchanged.

At addr_len 24 the filter sees family AF_INET6 with port and address
zero, while the kernel connects to the real destination. A filter that
denies an IPv6 port or address is bypassed. Denying connect.port == P
rejects [::1]:P with -EACCES at addr_len 28 but connects at addr_len 24.

Use SIN6_LEN_RFC2133 as the threshold. sin6_scope_id stays zero when
absent.

The threshold mismatch was found by an AI coding assistant (Claude Code)
comparing this hook against the net/ipv6 length checks on my
instructions; it also drafted the reproducer and this patch. I verified
the bypass and the fix in a VM on 7.3-rc6 and that 7.2 has the same
code.

Bu açığın açıklamasını Türkçeye çevirdik. Adım adım çözüm önerilerini kritik ve yeni açıklar için hazırlıyoruz; düzeltilmiş sürüm aşağıdaki tabloda, ayrıntılar üreticinin duyurusunda.

Etkilenen sürümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
Linux 7.2 –
< 7.2 Etkilenmiyor –
≥ 7.2.11 Etkilenmiyor –

Kaynaklar4 kaynak

Kayıt geçmişi

  1. Yayımlandı

İlgili açıklar

Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.