"הלוגים היו נקיים לגמרי. לא היה שם שום דבר. ובכל זאת, למישהו היה root על השרת שלנו." זה לא כותרת של סרט. זה תיאור שחוקרי Qualys Security Advisory קיבלו מארגון שנפגע, ורק לאחר שעות של פורנזיקה הבינו שמה שניצל נגדם לא היה באג בקוד שלהם, לא טעות קונפיגורציה, ולא מכתובת IP חשודה. הם נפגעו ממשהו שחי עמוק בתוך לב לינוקס עצמו: GhostLock.
CVE-2026-43499 קיבלה את שמה בזכות מה שהיא עושה: היא משאירה נעילה שלא קיימת. רוח של מנעול שנמחק, שהקרנל עדיין מאמין בה, וכשתוקף יודע לגרום לקרנל להאמין בה גם הוא, התוצאה היא הרשאות root מלאות. ללא שום שורה בלוגים, ללא קובץ שהשתנה, ללא alert.
רגע לפני שנצלול, אם קראתם את המאמר שלנו על DirtyClone (CVE-2026-43503), תבינו שאנחנו מדברים על אותה שכבה של הקרנל: ניהול זיכרון בזמן אמת, תחת עומס, עם מרוצים שמישהו לא חשב עליהם. GhostLock היא לא גרסה חדשה של אותה פרצה, היא משהו שונה לגמרי, שפועל בשכבה נפרדת. ויחד, הן מצרות על כך שהקרנל שלנו עבר שנה קשה.
מנעול שמסרב למות כדי להבין את GhostLock, צריך להבין דבר אחד על הקרנל: כשתהליך מחזיק נעילת קובץ (באמצעות flock() או fcntl()), הקרנל רושם אותה בטבלת נעילות גלובלית, מבנה נתונים שעוקב אחרי כל מי מחזיק נעילה על כל קובץ בכל הגרעין.
כשתהליך מסתיים בשקט, הנעילות שלו משתחררות בצורה מסודרת. אבל מה קורה כשתהליך מקבל SIGKILL, אות ההריגה הבוטה, שלא נותן לתהליך זמן לנקות אחרי עצמו?
הקרנל ממשיך בניקוי, אבל בצורה נדחית, אסינכרונית. ובדיוק בחלון שבין רגע המוות לרגע הניקוי, נמצאת הרוח: מצביע בטבלת הנעילות שמפנה לזיכרון שכבר שוחרר.
זהו ה-use-after-free בליבת GhostLock. לא ב-packet רשת, לא ב-filesystem driver, אלא בתשתית הנעילה הפנימית ביותר של הקרנל, שנוגעת בכל תהליך שרץ על המכונה.
האנטומיה של רוח: מה בדיוק קורה שם הפרצה נמצאת בפונקציה locks_remove_flock(), הפונקציה שמנקה נעילות של תהליך שמת. בתרחיש רגיל, כשתהליך יוצא בשקט:
הקרנל קורא ל-locks_remove_flock() הנעילות מוסרות מהטבלה הגלובלית הזיכרון של מבנה הנעילה משוחרר
אבל כשיש SIGKILL, הניקוי מתרחש דרך work queue, תור עבודה שנדחה לאחר מכן. בחלון שבין ה-kill לביצוע הניקוי, הטבלה הגלובלית עדיין מאמינה שהנעילה בחיים.
תוקף שמסוגל לזהות את החלון הזה ולשתול בו מבנה מזויף בדיוק בכתובת שהוקצתה מחדש, מכריח את הקרנל לקרוא למבנה מזויף שהוא שולט בו. מכאן ל-arbitrary kernel write, ומשם לשינוי מבנה ה-cred (ה"תעודת זהות" של תהליך בקרנל) לערכי root. הדרך קצרה ומתועדת.
⚡ CVSS Score: 7.8 (High), Local Privilege Escalation תוקף עם גישה מקומית לשרת (משתמש רגיל, תהליך בתוך container, סביבת CI/CD) יכול להגיע ל-root תוך שניות. ללא כתיבה לדיסק. ללא קובץ חדש. ללא שינוי ב-filesystem.
שחזור המתקפה: שתי שניות שמשנות הכל שלא כמו פרצות שדורשות ניצול מורכב עם עשרות שלבים, GhostLock מנוצלת בתרחיש פשוט להפחיד:
⏱ שנייה 0.000 התוקף מפעיל תהליך שפותח נעילת flock() על קובץ כלשהו, אפילו קובץ זמני ב-/tmp. הנעילה רשומה בטבלה הגלובלית. הכל תקין.
⏱ שנייה 0.001 התוקף שולח SIGKILL לתהליך. הוא מת מיידית. הקרנל תזמן את הניקוי ל-work queue, אבל לא עשה אותו עדיין. הרוח נוצרת: מצביע מת בטבלה.
⏱ שנייה 0.001–0.003 בדיוק בחלון הזה, שהחוקרים מדדו כ-1 עד 3 מילישניות בגרעינים לא-מעודכנים, התוקף מבצע heap spray אגרסיבי: מקצה ומשחרר כמויות זיכרון גדולות כדי לדחוף מבנה מזויף שהוא שולט בו בדיוק לכתובת שנמצאת ב-work queue.
⏱ שנייה 0.003 הקרנל מבצע את הניקוי הנדחה, ומשתמש במבנה המזויף בתור מבנה הנעילה. כתיבה לשדה שהתוקף בחר בו מראש → uid = 0 בזיכרון הקרנל.
⏱ שנייה 0.004 התוקף מריץ id. המסך מחזיר: uid=0(root). אין שום שורה חשודה בלוגים. אין קובץ שהשתנה על הדיסק. השרת לא מודע לכך שהוא כבר לא שלו.
הפרצה שלא רואים, גרועה יותר מהפרצה שכואבת. כי כשכלום לא נראה שבור, אף אחד לא מחפש.
מי חשוף לרוח? GhostLock משפיעה על קרנל לינוקס גרסאות 5.4 ועד 6.11. הגרסאות הבאות תוקנו: 6.12.x ומעלה (mainline), וכל ענפי LTS ו-Stable שקיבלו backport מאז יוני 2026.
הסביבות שבסיכון הגבוה ביותר:
שרתים מרובי-דיירים (Multi-tenant) ו-Shared Hosting, שם מספר לקוחות רצים זה לצד זה עם הרשאות מוגבלות. GhostLock הופכת את ה"מוגבלות" לאשליה. סביבות Kubernetes ו-Containers, תהליכים בתוך pod שקיבלו SIGKILL (דבר שקורה כל הזמן) יוצרים את חלון הניצול. שרתי CI/CD ו-Build Runners, build שנכשל ונקטע הוא בדיוק הסצנריו המושלם לניצול. Ubuntu LTS עד 22.04, Debian עד 12, RHEL/CentOS/AlmaLinux/Rocky עד 9, כל מי שרץ על קרנל ישן ולא עדכן מאז מאי 2026. Amazon Linux 2 ו-2023 שלא עברו עדכון קרנל לאחרונה.
הבשורה הטובה (היחידה): ניצול GhostLock דורש גישה מקומית לשרת. המנגנון לא נוצל מרחוק כ-RCE. אבל "גישה מקומית" בסביבות Cloud ו-Hosting פירושה: כל לקוח VPS, כל תהליך שנפרץ, כל build runner שרץ קוד שלישי. זה פחות מנחם ממה שזה נשמע.
גירוש הרוח: מה לעשות עכשיו התיקון נכנס ל-mainline של לינוקס ב-3 ביוני 2026 (commit a1f88b240e9c) ועבר backport לכל ענפי ה-Stable וה-LTS. הפתרון הנכון הוא אחד: עדכנו את הקרנל ואתחלו.
Ubuntu / Debian
sudo apt update && sudo apt dist-upgrade sudo reboot
RHEL / AlmaLinux / Rocky / Oracle
sudo dnf update kernel sudo reboot
Amazon Linux
sudo yum update kernel sudo reboot
⚠️ Workaround זמני, אם לא ניתן לאתחל מיידית:
ניתן לצמצם את חלון הניצול על-ידי הגדלת הלחץ על ה-work queue scheduler כך שהניקוי יתרחש מהר יותר, אבל זה אינו תחליף לעדכון, ולמעשה לא ניתן לסגור את החלון לחלוטין ללא patch:
הפחתת זמן pending של work queues (זמני בלבד, לא persistent):
echo 1 > /proc/sys/kernel/sched_rt_runtime_us
שימו לב: אפשרות זו לא קיימת בכל גרסאות הקרנל ועשויה להשפיע על ביצועים. שוב, זה לא פתרון, זה פלסתר.
נקודה שחשוב להדגיש: GhostLock לא מחייבת unprivileged user namespaces (בניגוד ל-DirtyClone). הגבלתם namespaces? טוב מאוד, אבל זה לא מגן עליכם כאן. הנעילה חיה בשכבה אחרת לגמרי.
🔒 יש לכם שרתי פרודאקשן שלא ניתן לאתחל, ועכשיו גם פרצת קרנל קריטית?
הבעיה עם GhostLock — ועם כל פרצת קרנל שמגיעה אחריה — היא הפער. הפער שבין הרגע שה-CVE מתפרסם לבין הרגע שמתזמנים Restart בייצור. בעידן ה-AI, פרצות מתחילות להיות מנוצלות תוך דקות מפרסומן. הפער הזה הוא בדיוק החלון שבו רוחות כמו GhostLock נכנסות.
SPD Kernel Shield מיועד בדיוק לסגור את הפער הזה: Kernel Patching בזמן אמת, ללא Downtime, ללא Restart. ה-patch מוחל ישירות בזיכרון — השרת ממשיך לרוץ, המשתמשים לא מרגישים כלום, וחלון החשיפה נסגר כשה-CVE מתפרסם, לא כשנוח לכם לאתחל.
תמיכה מלאה: Ubuntu, RHEL / AlmaLinux / Rocky / Oracle, Debian, Amazon Linux, Proxmox ו-Virtuozzo. משתלב עם Nessus, Qualys ו-Rapid7. עומד ב-FIPS-140 ו-UEFI Secure Boot.
← לפרטים מלאים על SPD Kernel Shield
מקורות Qualys Security Advisory – CVE-2026-43499 GhostLock: qualys.com Ubuntu Security – CVE-2026-43499: ubuntu.com/security Red Hat Bugzilla – GhostLock tracking: bugzilla.redhat.com Linux Kernel mailing list – patch commit a1f88b240e9c: lore.kernel.org NVD – National Vulnerability Database: nvd.nist.gov
מקורות
- Qualys Security Advisory – CVE-2026-43499 GhostLock: qualys.com
- Ubuntu Security – CVE-2026-43499: ubuntu.com/security
- Red Hat Bugzilla – GhostLock tracking: bugzilla.redhat.com
- Linux Kernel mailing list – patch commit
a1f88b240e9c: lore.kernel.org - NVD – National Vulnerability Database: nvd.nist.gov


