Anthropic-ը TCP միջուկի փաթեթում բացահայտել է կրիտիկական խոցելիություն (CVE-2026-98432): Linux, որը թույլ է տալիս հեռակա կոդի կատարում՝ ուղարկելով հատուկ մշակված փաթեթներ: Հաղորդվել է աշխատող շահագործման մասին, որը թույլ է տալիս կոդի կատարում միջուկի մակարդակում և հեռակա կերպով ստանալ root արտոնություններ համակարգում: Այս շահագործման հնարավորությունը հարմար է այն համակարգերի վրա հարձակվելու համար, որոնց սերվերային պրոցեսները ընդունում են կապեր Multipath TCP (MPTCP) արձանագրությունը աջակցող ցանցային սոկետների միջոցով: MPTCP աջակցությունը կարող է միացվել յուրաքանչյուր ցանցի սոկետի հիման վրա, որը Go ստանդարտ գրադարանի լռելյայն տարբերակն է՝ սկսած Go 1.24-ից (փետրվար 2025):
Պատրաստված շահագործումը կարող է օգտագործվել Go-ում գրված ցանկացած սերվերային ծրագրի հետ, ներառյալ Caddy HTTP սերվերը, քանի դեռ այն կարող է ցանցային փաթեթներ ուղարկել իր ստեղծած լսողական սոքեթին: Քանի որ խոցելիությունը առկա է անմիջապես IPv4 փաթեթում և բնորոշ չէ MPTCP-ին, հնարավոր է ստեղծել շահագործումներ, որոնք աշխատում են առանց MPTCP-ին հենվելու, բայց նման շահագործումները դեռևս չեն ցուցադրվել: Օրինակ, հնարավոր է շահագործել խոցելիությունը սոքեթի միգրացիայի հարցումները մշակելիս, որը հասանելի է net.ipv4.tcp_migrate_req=1 պարամետրով կոնֆիգուրացիաներում կամ BPF_SK_REUSEPORT_SELECT_OR_MIGRATE տարբերակով eBPF ծրագրեր օգտագործելիս:
Խոցելիությունը պայմանավորված է մրցավազքի պայմանով, որը տեղի է ունենում TCP կապի հաստատման ընթացքում վերաուղարկված SYN հարցումների միաժամանակյա մշակման ընթացքում: Քանի որ tcp_v4_syn_recv_sock() ֆունկցիան պարամետրերը ireq->ireq_opt կառուցվածքից փոխանցում է դուստր սոքեթին՝ հղումով, այլ ոչ թե դրանք պատճենելով, որոշակի հանգամանքներում առաջանում է իրավիճակ, երբ inet_opt և ireq_opt կառուցվածքների հիշողությունը, որոնք պարունակում են սոքեթի պարամետրերը, արդեն ազատված է, բայց դրանց հետ կապված սոքեթի տարբերակները շարունակում են օգտագործվել (use-after-free):
Հեռակա շահագործումն իրականացվում է ժամանակի համաժամեցված ցանցային հարցումների շարք ուղարկելով: Շահագործումը հաջողությամբ կիրառվում է հասցեների պատահականացման (KASLR) օգտագործող միջուկների վրա, սակայն մրցավազքի վիճակի պատուհանին հասնելը պահանջում է զգալի ժամանակ և մեծ թվով վերստին փորձեր: Շահագործումը պարզեցվում է նրանով, որ մրցավազքի վիճակի պատուհանը բաց թողնելը հանգեցնում է միայն կապի հաստատման, այլ ոչ թե միջուկի վթարի, ինչը թույլ է տալիս անորոշ ժամանակով փորձեր: Շահագործման նախատիպում հարձակումը տևել է մոտավորապես մեկ ժամ՝ 48 րոպե՝ հիշողության դասավորությունը որոշելու և ևս 5 րոպե՝ կոդի կատարումը կազմակերպելու համար:
Դեռևս չկան շրջանցիկ լուծումներ, որոնք երաշխավորում են խոցելիության լուծումը. միակ հուսալի տարբերակը միջուկի թարմացում տեղադրելն է: Խնդիրն ի հայտ է գալիս սկսած միջուկից: Linux 4.4 և շտկվել են 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 և 7.3 թողարկումներում: Բաշխումներում խոցելիության շտկումների կարգավիճակը կարելի է գնահատել հետևյալ էջերում՝ Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Ֆեդորա։
Խոցելիությունը ընդհանուր առմամբ չարգելափակող շահագործման որոշակի մեթոդների դեմ պայքարի առաջարկություններից են MPTCP աջակցության անջատումը և միջուկի sysctl պարամետրը net.ipv4.tcp_migrate_req-ի վրա 0 դնելը։
sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0
Որոշելու համար, թե արդյոք համակարգում կան պրոցեսներ, որոնք օգտագործում են socket-ներ
MPTCP-ում կարող եք օգտագործել հետևյալ հրամանները.
ip mptcp վերջնակետի ցուցադրում
ip mptcp սահմանաչափերը ցույց են տալիս
Go ծրագրերում MPTCP աջակցությունը անջատելու համար օգտագործեք "multipathtcp=0" դրոշը, որը կարող է սահմանվել "GODEBUG=multipathtcp=0" միջավայրի փոփոխականը սահմանելով: Կառուցման ժամանակ MPTCP աջակցությունը անջատելու համար go.mod ֆայլին ավելացրեք "godebug multipathtcp=0": Ձեր ծրագրի կոդում կարող եք անջատել MPTCP-ն՝ օգտագործելով net.Dialer.SetMultipathTCP և net.ListenConfig.SetMultipathTCP ֆունկցիաները:
Քննարկված խնդրից բացի, Anthropic-ը նաև հայտարարեց միջուկում տեղական օգտագործման համար նախատեսված մի շարք խոցելիությունների մասին։ Linux, OpenBSD և FreeBSD, որոնք թույլ են տալիս root մուտք գործել համակարգ և դուրս գալ մեկուսացված կոնտեյներներից։ Chrome-ի և Safari-ի խոցելիություններ, որոնք հանգեցնում են համակարգում կոդի կատարմանը՝ հատուկ նախագծված վեբ էջերը բացելիս։ Միջուկի խոցելիություն։ Windows, որը հանգեցնում է վթարի; հարթակի խոցելիություն Android, որը թույլ է տալիս շրջանցել էկրանի կողպեքը և մուտք գործել անձնական տեղեկատվությանը և լուսանկարներին՝ առանց սարքը ապակողպելու (հարձակումը ցուցադրվել է Google Pixel 9 սմարթֆոնի վրա):
Հավելվածը:
- Nginx-ում IPPROTO_MPTCP տարբերակը լսողական ցանցային միակցիչի համար միացնելու հնարավորությունը առկա է 1.29.7 տարբերակից ի վեր, բայց այն լռելյայնորեն չի օգտագործվում։
- Lighttpd-ում MPTCP-ն միացնելու հնարավորությունը հասանելի է 1.4.76 թողարկումից ի վեր։
- Apache httpd-ում MPTCP-ն աջակցող թարմացումները ավելացվել են Apache httpd 2.5-HEAD ճյուղին 2024 թվականին։
- Systemd-ում 257 տարբերակում ավելացվել է MPTCP-ի միացման աջակցություն սոքեթի միջոցով ակտիվացման դեպքում։
- Apache Traffic Server-ում MPTCP-ն միացնելու տարբերակը աջակցվում է 9.2.4 տարբերակից սկսած։
- HAProxy-ում, սկսած 3.1.0 տարբերակից, հասանելի է "mptcp{,4,6}@" տարբերակը։ «
- Traefik-ում IPPROTO_MPTCP դրոշի սահմանումը միացված է լռելյայնորեն՝ 2.11.26, 3.4.2 և v3.5.0-rc1 տարբերակներից ի վեր։
- Valkey DBMS-ում, սկսած 9.0.0 տարբերակից, հասանելի են "--mptcp" տարբերակը և "mptcp yes" և "repl-mptcp yes" կարգավորումները։
Source: opennet.ru
