- 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
- 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ım | Etkilenen | Düzeltildiği sürüm |
|---|---|---|
| Linux | 7.2 | – |
| < 7.2 Etkilenmiyor | – | |
| ≥ 7.2.11 Etkilenmiyor | – |
Kaynaklar4 kaynak
Kayıt geçmişi
- 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.