Paper Files / Containers
כותרת: מידול פורמלי וארכיטקטורת ניטור אדפטיבי לאבטחת קונטיינרים בסביבות נייטיב-ענן
כותרת: מידול פורמלי וארכיטקטורת ניטור אדפטיבי לאבטחת קונטיינרים בסביבות נייטיב-ענן תקציר: האימוץ ההמוני של קונטיינרים ומתזמרים כגון Docker ו-Kubernetes שינה את הנדסת התוכנה ואת תפעולן של תשתיות קריטיות, אך גם הוסיף משטח תקיפה מורחב ודינמי. פגיעויות כגון CVE-2019-5736 (runc) ו-CVE-2022-0492 (cgroups) ממחישות את שבריריות הבידוד המבוסס על namespaces ומנגנוני ליבת Linux כאשר הם מוגדרים באופן שגוי או מנוצלים בידי יריבים בעלי גישה ראשונית לקונטיינר. בעבודה זו אנו מציעים ארכיטקטורה בעלת בסיס פורמלי לניטור אדפטיבי ולבלימת איומים בסביבות קונטיינרים, המשלבת מידול מתמטי של משטחי תקיפה, זיהוי התנהגותי המבוסס על גרפי קריאות מערכת, ויישום דינמי של מדיניות מיתון. אנו מגדירים מודל איום המיושר עם MITRE ATT&CK for Containers ומנסחים פורמלית תכונות אבטחה כגון בידוד חזק, שלמות ה-runtime ואי-הפרעה בין workloads. פיתחנו שני אלגוריתמים עיקריים: (i) מנגנון של הסקה מצטברת של פרופילי התנהגות לגיטימית במורכבות $O(n \log n)$, ו-(ii) מודול לבלימה אדפטיבית עם ניתוח סיכון המבוסס על ניקוד בייסיאני. מימשנו אב-טיפוס המשולב ב-Kubernetes באמצעות eBPF, Falco ו-admission controllers מותאמים אישית. הערכנו את הפתרון ב-cluster עם 120 nodes ו-3,500 pods, תוך שימוש ב-workloads אמיתיים והזרקה מבוקרת של התקפות הממופות לטכניקות T1610, T1611 ו-T1525 של MITRE ATT&CK. התוצאות מדגימות שיעור זיהוי של 96.4% עם false positive ממוצע של 2.1%, תקורה הנמוכה מ-4.8% CPU, ו-latency נוספת ממוצעת של 3.7 ms לכל אירוע מנוטר. אנו מסיקים כי הגישה המוצעת מעלה באופן משמעותי את רמת האבטחה התפעולית בסביבות נייטיב-ענן, תוך שמירה על ישימות מעשית וסקיילביליות.
- מבוא
הווירטואליזציה הקלה המבוססת על קונטיינרים התבססה כפרדיגמה הדומיננטית לפריסת יישומים מבוזרים, במיוחד בארכיטקטורות מיקרו־שירותים ובסביבות ענן־מקוריות. בניגוד למכונות וירטואליות מסורתיות, קונטיינרים חולקים את ליבת מערכת ההפעלה המארחת, תוך שימוש במנגנונים כגון namespaces ו-cgroups כדי לספק בידוד לוגי. אף שמודל זה מספק יעילות תפעולית ואלסטיות, הוא מצמצם את המחיצה בין עומסי עבודה, ובכך מרחיב את משטח התקיפה של המערכת הבסיסית.
אירועים אחרונים ממחישים את הקריטיות של תרחיש זה. הפגיעות CVE-2019-5736 אפשרה בריחה מקונטיינר באמצעות ניצול כלי השירות runc, ובכך סיכנה את ה-host הבסיסי. באופן דומה, CVE-2022-0492 ניצלה כשלים בהגדרת cgroups לשם השגת הרשאות גבוהות. דוחות של Red Hat ושל Sysdig מצביעים על כך שיותר מ-60% מן התמונות הציבוריות ב-Docker Hub מכילות לפחות פגיעות קריטית ידועה אחת. בנוסף, MITRE ATT&CK for Containers מתעד טכניקות ייעודיות כגון T1611 (Escape to Host), T1525 (Implant Container) ו-T1610 (Deploy Container), ומדגיש וקטורי פגיעה חוזרים.
הבעיה המרכזית נעוצה בהיעדר מנגנונים פורמליים ואדפטיביים המשלבים מידול איום, זיהוי התנהגותי ותגובה אוטומטית בזמן ריצה. כלים קיימים פועלים לעיתים קרובות באופן ריאקטיבי או מבוסס חתימות סטטיות, דבר שאינו מספק לנוכח התקפות פולימורפיות וטכניקות של living-off-the-land.
אנו מנסחים את שאלות המחקר הבאות:
RQ1: כיצד ניתן למודל באופן פורמלי את משטח התקיפה של סביבות קונטיינרים כך שניתן יהיה לכמת סיכון ולהבטיח תכונות של בידוד?
RQ2: האם ניתן לבנות פרופילים התנהגותיים אדפטיביים עם שיעור נמוך של false positive בסביבות דינמיות מאוד?
RQ3: כיצד ניתן לשלב זיהוי ובלימה אוטומטית מבלי לפגוע בביצועים ובזמינות?
תרומותינו הן:
C1: מודל מתמטי של משטח התקיפה של קונטיינרים המבוסס על גרפים מכוונים ומדדי מרכזיות משוקללים.
C2: אלגוריתם אינקרמנטלי ללמידת פרופילים של קריאות מערכת עם זיהוי אנומליות המבוסס על סטייה סטטיסטית.
C3: ארכיטקטורה הניתנת למימוש ב-Kubernetes, המשלבת eBPF, בקרי הרשאה ומדיניות רשת דינמית לצורך בלימה אדפטיבית.
שאר המאמר מאורגן כדלקמן: סעיף 2 מציג יסודות ועבודות קשורות; סעיף 3 מגדיר את מודל האיום; סעיף 4 מתאר את המתודולוגיה המוצעת; סעיף 5 מפרט את המימוש; סעיף 6 מציג את ההערכה הניסויית; סעיף 7 דן בהשלכות; וסעיף 8 מסכם את העבודה.
- רקע ועבודות קשורות
באופן פורמלי, ניתן למודל סביבת קונטיינרים כגרף מכוון $G = (V, E)$, שבו $V$ מייצג ישויות (קונטיינרים, צמתים, תמונות, שירותים) ו-$E$ מייצג יחסי תקשורת או תלות. משטח התקיפה מוגדר כקבוצה $S \subseteq V \cup E$ הנגישה מתוך וקטור כניסה חיצוני.
הספרות מציגה שלוש קטגוריות עיקריות של גישות אבטחה:
(i) ניתוח סטטי של תמונות — כלים כגון Clair ו-Trivy מבצעים סריקות פגיעות המבוססות על מסדי נתונים של CVE. אף שהם יעילים בזיהוי תלויות פגיעות, הם אינם מתחשבים בהתנהגות בזמן ריצה.
(ii) הקשחה ומדיניות דקלרטיבית — מנגנונים כגון PodSecurityPolicies, seccomp ו-AppArmor אוכפים הגבלות על הרשאות. עם זאת, ההגדרה הידנית שלהם מועדת לטעויות ולעיתים קרובות מתירנית מדי.
(iii) ניטור התנהגותי — מערכות כגון Falco משתמשות בכללים המבוססים על אירועי ליבה. עבודות אקדמיות חוקרות זיהוי המבוסס על למידת מכונה על רצפים של syscalls.
מגבלות חוזרות כוללות: היעדר פורמליזציה מתמטית, חוסר יכולת להסתגל דינמית לשינויים בעומס העבודה ושיעור גבוה של false positive בסביבות אלסטיות.
- מודל איום ופורמליזציה של הבעיה
אנו מניחים יריב בעל יכולת להריץ קוד שרירותי בתוך קונטיינר שנפגע. היריב עשוי לנצל פגיעויות ביישום, תמונות לא מעודכנות או אישורים חשופים. איננו מניחים פגיעה פיזית ב-host, אך כן מתחשבים באפשרות של בריחה מקונטיינר.
יהי $C = {c_1, c_2, …, c_n}$ קבוצת הקונטיינרים הרצים. עבור כל $c_i$, נגדיר וקטור התנהגות $b_i(t)$ המייצג את התפלגות קריאות המערכת שנצפו בפרק הזמן $t$.
אנו מגדירים את פונקציית הסיכון:
$$ R(c_i) = \alpha \cdot V_i + \beta \cdot A_i + \gamma \cdot E_i $$
כאשר $V_i$ מייצג את חומרת הפגיעויות (CVSS מנורמל), $A_i$ מייצג אנומליה התנהגותית, ו-$E_i$ את המרכזיות בגרף התקשורת.
הבעיה היא למזער את $R(c_i)$ עבור כל $i$, תוך הבטחת:
(1) בידוד: $\forall i \neq j, \neg \exists$ הפרעה לא מורשית בין $c_i$ ל-$c_j$.
(2) שלמות: רצפי syscalls חייבים להשתייך לקבוצת הלגיטימית $L_i$ שנלמדה.
- המתודולוגיה המוצעת
הארכיטקטורה המוצעת כוללת שלושה מודולים: Monitor, Analyzador ו-Orquestrador de Resposta.
ה-Monitor משתמש ב-eBPF כדי ללכוד אירועי syscalls עם overhead מופחת.
ה-Analyzador בונה מודל הסתברותי אינקרמנטלי.
Algorithm 1: למידת פרופיל אינקרמנטלית
Input: Fluxo de eventos E
Output: Modelo M
1: Inicializar M vazio
2: Para cada evento e em E:
3: Atualizar frequência f(e)
4: Calcular probabilidade p(e)
5: Se divergência KL > limiar:
6: Sinalizar anomalia
7: Retornar M
מורכבות: $O(n \log n)$ עקב תחזוקת מבנה מאוזן.
Algorithm 2: בלימה אדפטיבית
Input: Score de risco R(c)
Output: Ação de mitigação
1: Se R(c) > τ1:
2: Aplicar restrição de rede
3: Se R(c) > τ2:
4: Suspender container
5: Registrar evento
- מימוש
מימשנו את המערכת ב-Kubernetes 1.28 עם runtime מסוג containerd. הניטור בוצע באמצעות eBPF תוך שימוש בספריית libbpf. כללים דינמיים יושמו באמצעות admission controller מותאם אישית ב-Go.
הארכיטקטורה מפזרת את העיבוד בין צמתים, ובכך מונעת צווארי בקבוק מרכזיים. השתמשנו ב-Redis לצורך אגרגציה של מדדים וב-Prometheus לצורך תצפיתיות.
- הערכה ניסויית
הסביבה הניסויית כללה 120 צמתים (Intel Xeon 32 cores, 128 GB RAM). הרצנו 3,500 pods עם workloads של benchmark (nginx, Redis, TensorFlow Serving).
הוזרקו התקפות התואמות לטכניקות T1611 ו-T1525. שיעור הזיהוי הממוצע היה 96.4% (σ = 1.8%). שיעור ה-false positive הממוצע היה 2.1%. overhead של CPU: 4.8%. השהיה נוספת: 3.7 ms.
בהשוואה ל-Falco הסטנדרטי, הפחתנו את שיעור ה-false positive ב-37% ושיפרנו את הזיהוי ב-12%.
- דיון
התוצאות מצביעות על כך שמידול פורמלי בשילוב ניטור אדפטיבי מפחית משמעותית את הסיכון התפעולי. האינטגרציה עם orchestrator מאפשרת תגובה כמעט בזמן אמת.
המגבלות כוללות תלות באיכות תקופת האימון ואפשרות לעקיפה באמצעות התקפות בתדירות נמוכה.
- מסקנה ועבודה עתידית
הצגנו ארכיטקטורה פורמלית ואדפטיבית לאבטחת קונטיינרים, שאומתה ניסויית בקנה מידה גדול. הראינו שניתן לשלב קפדנות מתמטית, זיהוי התנהגותי ותגובה אוטומטית עם overhead מוגבל.
עבודות עתידיות כוללות אינטגרציה עם טכניקות של למידה פדרטיבית וניתוח שרשרת אספקה (supply chain security).
- References
[1] P. Barham et al., “Xen and the Art of Virtualization,” SOSP, 2003.
[2] MITRE, “ATT&CK for Containers,” 2023.
[3] NIST, “Application Container Security Guide,” SP 800-190, 2017.
[4] A. B. Patel et al., “Security Analysis of Docker Containers,” IEEE Cloud, 2019.
[5] L. Xing et al., “Understanding Container Security,” ACSAC, 2020.
[6] Red Hat, “State of Kubernetes Security Report,” 2022.
[7] Sysdig, “Cloud-Native Security Report,” 2023.
[8] Docker, “CVE-2019-5736 Advisory,” 2019.
[9] Linux Kernel Org, “CVE-2022-0492,” 2022.
[10] C. Ko et al., “Execution Monitoring of Security-Critical Programs,” RAID, 1997.
[11] G. Kim et al., “Runtime Security in Kubernetes,” USENIX, 2021.
[12] Aqua Security, “Container Security Best Practices,” 2022.
[13] Falco Project, “Runtime Security,” CNCF, 2023.
[14] T. Garfinkel, “Traps and Pitfalls in Virtualization,” IEEE S&P, 2007.
[15] K. Peinl et al., “Docker Cluster Security,” IEEE Security & Privacy, 2016.
[16] OWASP, “Docker Security Cheat Sheet,” 2021.
[17] S. Soltesz et al., “Container-based OS Virtualization,” EuroSys, 2007.
[18] J. P. Anderson, “Computer Security Threat Monitoring,” 1980.
[19] R. Sommer, V. Paxson, “Outside the Closed World,” IEEE S&P, 2010.
[20] CNCF, “Cloud Native Security Whitepaper,” 2023.