אנתרופיק חשפה פגיעות קריטית (CVE-2026-98432) במחסנית ה-TCP של הליבה. Linux, המאפשר ביצוע קוד מרחוק על ידי שליחת מנות בעלות מבנה מיוחד. דווח על פרצת קוד פעילה, המאפשרת ביצוע קוד ברמת הליבה וקבלת הרשאות root מרחוק במערכת. הפרצת הקוד מתאימה לתקיפת מערכות עם תהליכי שרת המקבלים חיבורים דרך שקעי רשת התומכים בפרוטוקול Multipath TCP (MPTCP). ניתן להפעיל תמיכה ב-MPTCP על בסיס כל שקע רשת, שהוא ברירת המחדל בספריית הסטנדרטים של Go, החל מ-Go 1.24 (פברואר 2025).
ניתן להשתמש בניצול הפריצה שהוכן עם כל יישום שרת שנכתב ב-Go, כולל שרת ה-HTTP של Caddy, כל עוד הוא יכול לשלוח חבילות רשת לשקע ההאזנה שהוא יוצר. מכיוון שהפגיעות קיימת ישירות במחסנית IPv4 ואינה ספציפית ל-MPTCP, ניתן ליצור ניצול פריצות שפועל מבלי להסתמך על MPTCP, אך ניצול פריצות כאלה טרם הודגם. לדוגמה, ניתן לנצל את הפגיעות בעת עיבוד בקשות להעברת שקעים, הזמינה בתצורות עם הפרמטר net.ipv4.tcp_migrate_req=1 או בעת שימוש בתוכניות eBPF עם האפשרות BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.
הפגיעות נגרמת עקב מצב מרוץ המתרחש במהלך עיבוד סימולטני של בקשות SYN המועברות מחדש במהלך יצירת חיבור TCP. מכיוון שהפונקציה 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, ג'נטו, ארכיון,
פדורה.
המלצות להתמודדות עם שיטות ניצול ספציפיות שאינן חוסמות את הפגיעות באופן כללי כוללות השבתת תמיכת MPTCP והגדרת פרמטר sysctl של הליבה net.ipv4.tcp_migrate_req ל-0:
sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0
כדי לקבוע אם ישנם תהליכים במערכת המשתמשים ב-sockets עם
MPTCP, ניתן להשתמש בפקודות:
הצגת נקודת קצה של IP mptcp
מגבלות ה-IP של mptcp מוצגות
כדי להשבית תמיכה ב-MPTCP בתוכניות Go, השתמשו בדגל "multipathtcp=0", אותו ניתן להגדיר על ידי הגדרת משתנה הסביבה "GODEBUG=multipathtcp=0". כדי להשבית תמיכה ב-MPTCP בזמן הבנייה, הוסיפו "godebug multipathtcp=0" לקובץ go.mod. בקוד היישום שלכם, תוכלו להשבית את MPTCP באמצעות הפונקציות net.Dialer.SetMultipathTCP ו-net.ListenConfig.SetMultipathTCP.
בנוסף לבעיה שנדונה, Anthropic הכריזה גם על סדרה של פגיעויות הניתנות לניצול מקומי בליבת המערכת. Linux, OpenBSD ו-FreeBSD המאפשרים גישת root למערכת ובריחה ממכולות מבודדות; פגיעויות ב-Chrome וב-Safari המובילות להרצת קוד במערכת בעת פתיחת דפי אינטרנט שעוצבו במיוחד; פגיעות בליבת המערכת. Windows, מה שמוביל לקריסה; פגיעות בפלטפורמה Android, המאפשר לעקוף את נעילת המסך ולגשת למידע אישי ותמונות מבלי לפתוח את נעילת המכשיר (המתקפה הודגמה בסמארטפון גוגל פיקסל 9).
תוספת:
- ב-nginx, היכולת להפעיל את האפשרות IPPROTO_MPTCP עבור שקע רשת מקשיב קיימת מאז גרסה 1.29.7, אך אינה בשימוש כברירת מחדל.
- ב-Lighttpd, האפשרות להפעיל MPTCP זמינה מאז גרסה 1.4.76.
- ב-Apache httpd, בשנת 2024 נוספו תיקונים לתמיכה ב-MPTCP לענף Apache httpd 2.5-HEAD.
- ב-systemd, נוספה תמיכה בהפעלת MPTCP כאשר הוא מופעל דרך socket בגרסה 257.
- בשרת Apache Traffic, האפשרות להפעיל את 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, החל מגרסה 9.0.0, האפשרות "--mptcp" וההגדרות "mptcp yes" ו-"repl-mptcp yes" זמינות.
מקור: OpenNet.ru
