Anthropic, nüvənin TCP yığınında kritik bir zəifliyi (CVE-2026-98432) aşkar etdi. Linux, xüsusi hazırlanmış paketlər göndərməklə uzaqdan kod icrasına imkan verir. Kodun kernel səviyyəsində icrasına imkan verən və sistemdə uzaqdan kök imtiyazları əldə edən işləyən bir istismar bildirilib. İstismar, Multipath TCP (MPTCP) protokolunu dəstəkləyən şəbəkə yuvaları vasitəsilə əlaqələri qəbul edən server prosesləri olan sistemlərə hücum etmək üçün uyğundur. MPTCP dəstəyi, Go standart kitabxanasında standart olaraq Go 1.24-dən (Fevral 2025) başlayaraq hər şəbəkə yuvası əsasında aktivləşdirilə bilər.
Hazırlanmış eksploit, yaratdığı dinləmə soketinə şəbəkə paketlərini göndərə bildiyi müddətcə, Caddy HTTP serveri də daxil olmaqla, Go dilində yazılmış istənilən server tətbiqi ilə istifadə edilə bilər. Zəiflik birbaşa IPv4 yığınında mövcud olduğundan və MPTCP-yə xas olmadığından, MPTCP-yə etibar etmədən işləyən eksploitlər yaratmaq mümkündür, lakin bu cür eksploitlər hələ nümayiş etdirilməyib. Məsələn, net.ipv4.tcp_migrate_req=1 parametri ilə konfiqurasiyalarda mövcud olan soket miqrasiyası sorğularını emal edərkən və ya BPF_SK_REUSEPORT_SELECT_OR_MIGRATE seçimi ilə eBPF proqramlarından istifadə edərkən zəiflikdən istifadə etmək mümkündür.
Bu zəiflik, TCP bağlantısı qurularkən yenidən ötürülən SYN sorğularının eyni vaxtda emalı zamanı baş verən yarış şərtindən qaynaqlanır. tcp_v4_syn_recv_sock() funksiyası parametrləri ireq->ireq_opt strukturundan kopyalamaq əvəzinə, istinad vasitəsilə uşaq soketinə ötürdüyündən, müəyyən hallarda soket parametrlərini ehtiva edən inet_opt və ireq_opt strukturları üçün yaddaşın artıq boşaldığı, lakin əlaqəli soket seçimlərinin istifadəyə davam etdiyi (pulsuz istifadədən sonra) vəziyyət yaranır.
Uzaqdan istismar bir sıra zamanla sinxronlaşdırılmış şəbəkə sorğuları göndərməklə həyata keçirilir. İstismar ünvan təsadüfiləşdirməsindən (KASLR) istifadə edən nüvələrə uğurla tətbiq olunur, lakin yarış şərti pəncərəsinə çatmaq xeyli vaxt aparır və çox sayda təkrar cəhd tələb edir. İstismar, yarış şərti pəncərəsini qaçırmağın nüvənin çökməsi əvəzinə yalnız əl sıxışmasına səbəb olması və qeyri-müəyyən cəhdlərə imkan verməsi ilə sadələşdirilir. İstismar prototipində hücum təxminən bir saat çəkdi — yaddaş düzülüşünü təyin etmək üçün 48 dəqiqə və kodun icrasını təşkil etmək üçün daha 5 dəqiqə.
Hələlik boşluğun həllini təmin edən heç bir alternativ həll yolu yoxdur — yeganə etibarlı seçim nüvə yeniləməsinin quraşdırılmasıdır. Problem özünü nüvədən başlayaraq göstərir. Linux 4.4 versiyasında və 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 və 7.3 versiyalarında düzəldilib. Distribüsiyalardakı zəiflik düzəlişlərinin vəziyyətini bu səhifələrdə qiymətləndirmək olar: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.
Ümumiyyətlə zəifliyi bloklamayan spesifik istismar metodlarına qarşı mübarizə tövsiyələrinə MPTCP dəstəyini söndürmək və net.ipv4.tcp_migrate_req kernel sysctl parametrini 0-a təyin etmək daxildir:
sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0
Sistemdə soketlərdən istifadə edən proseslərin olub olmadığını müəyyən etmək üçün
MPTCP-də aşağıdakı əmrlərdən istifadə edə bilərsiniz:
ip mptcp son nöqtə şousu
ip mptcp limitləri göstərilir
Go proqramlarında MPTCP dəstəyini deaktiv etmək üçün "multipathtcp=0" bayrağından istifadə edin, bu da "GODEBUG=multipathtcp=0" mühit dəyişənini təyin etməklə təyin edilə bilər. Quraşdırma zamanı MPTCP dəstəyini deaktiv etmək üçün go.mod faylına "godebug multipathtcp=0" əlavə edin. Tətbiq kodunuzda net.Dialer.SetMultipathTCP və net.ListenConfig.SetMultipathTCP funksiyalarından istifadə edərək MPTCP-ni deaktiv edə bilərsiniz.
Müzakirə olunan məsələyə əlavə olaraq, Anthropic həmçinin nüvədə bir sıra yerli istismar edilə bilən zəiflikləri də açıqladı. Linux, sistemə kök girişi təmin edən və təcrid olunmuş konteynerlərdən qaçan OpenBSD və FreeBSD; xüsusi hazırlanmış veb səhifələri açarkən sistemdə kodun icrasına səbəb olan Chrome və Safari-dəki zəifliklər; nüvədəki zəiflik Windows, çökməyə səbəb olur; platforma zəifliyi Android, bu da ekran kilidini keçməyə və cihazın kilidini açmadan şəxsi məlumatlara və fotoşəkillərə daxil olmağa imkan verir (hücum Google Pixel 9 smartfonunda nümayiş etdirilib).
Əlavə:
- Nginx-də, dinləmə şəbəkəsi yuvası üçün IPPROTO_MPTCP seçimini aktivləşdirmək imkanı 1.29.7 versiyasından bəri mövcuddur, lakin standart olaraq istifadə edilmir.
- Lighttpd-də MPTCP-ni aktivləşdirmək seçimi 1.4.76 versiyasından bəri mövcuddur.
- Apache httpd-də, MPTCP-ni dəstəkləmək üçün yamalar 2024-cü ildə Apache httpd 2.5-HEAD filialına əlavə edildi.
- systemd-də, 257 versiyasında bir yuva üzərindən aktivləşdirildikdə MPTCP-nin aktivləşdirilməsi üçün dəstək əlavə edildi.
- Apache Trafik Serverində MPTCP-ni aktivləşdirmək seçimi 9.2.4 versiyasından bəri dəstəklənir.
- HAProxy-də, 3.1.0 versiyasından başlayaraq, "mptcp{,4,6}@" seçimi mövcuddur. ".
- Traefik-də, 2.11.26, 3.4.2 və v3.5.0-rc1 versiyalarından bəri IPPROTO_MPTCP bayrağının təyin edilməsi standart olaraq aktivdir.
- Valkey DBMS-də, 9.0.0 versiyasından başlayaraq, "--mptcp" seçimi və "mptcp yes" və "repl-mptcp yes" parametrləri mövcuddur.
Mənbə: opennet.ru
