Paper Files / Containers
כותרת: ארכיטקטורה פורמלית לאיתור ולהפחתה של בריחות ממכולות המבוססת על פרופילי התנהגות הסתברותיים ואימות מדיניות בגרעין
כותרת: ארכיטקטורה פורמלית לאיתור ולהפחתה של בריחות ממכולות המבוססת על פרופילי התנהגות הסתברותיים ואימות מדיניות בגרעין תקציר: וירטואליזציה מבוססת מכולות ביססה את עצמה כיסוד של תשתית native cloud, אך התלות שלה בגרעין משותף מציבה אתגרי אבטחה מבניים. בריחות ממכולות נותרות וקטורי פגיעה קריטיים, במיוחד בסביבות Kubernetes בקנה מידה גדול, שבהן פגיעויות ב-runtime, בתת-המערכת cgroups או בגרעין עצמו עלולות להוביל להפרת בידוד. בעבודה זו אנו מציעים ארכיטקטורה פורמלית לאיתור ולהפחתה של בריחות ממכולות המבוססת על מידול הסתברותי של רצפי קריאות מערכת ועל סינתזה אוטומטית של מדיניות אבטחה ברמת הגרעין. אנו ממדלים את ההתנהגות הלגיטימית של יישומים כשפה הסתברותית מעל האלפבית של syscalls, הממומשת באמצעות שרשראות מרקוב מסדר משתנה עם החלקה בייסיאנית. אנו גוזרים גבולות פורמליים של נכונות ושל שלמות תחת הפרמטרים $(\epsilon, \delta)$ ומציגים קריטריון החלטה המבוסס על log-verossimilhança מצטברת. מתוך ה-support האמפירי שנצפה, אנו מסנתזים אוטומטית פרופילי seccomp מינימליים ומדיניות תואמת ל-LSMs מודרניים (AppArmor או SELinux), ובכך מצמצמים באופן כמותי את משטח התקיפה. מימשנו את הארכיטקטורה עם eBPF המשולב עם tracepoints של גרעין Linux 6.x, תוך אינטגרציה שלה עם אשכול Kubernetes 1.28 ו-containerd 1.7. בהערכה ניסויית שכללה 120 צמתים ו-1,800 מכולות, השגנו הפחתה ממוצעת של 72.4% בקבוצת ה-syscalls המותרות, שיעור איתור של 96.1% ותקורת CPU ממוצעת של 3.7%. עוד הראינו כי הגישה עולה על מנגנונים המבוססים אך ורק על כללים היוריסטיים, תוך שמירה על מדרגיות ועל השהיה נמוכה. אנו מסיקים כי השילוב של מידול הסתברותי פורמלי, אימות יעיל בגרעין וסינתזה אוטומטית של מדיניות מהווה אסטרטגיה חזקה להקשחה דינמית של סביבות מבוססות מכולות בשנת 2025.
- מבוא
הווירטואליזציה המבוססת על קונטיינרים שינתה את תחום הנדסת המערכות המבוזרות בכך שאפשרה בידוד קל־משקל של יישומים ביעילות עדיפה על פני מכונות וירטואליות מסורתיות (BARHAM et al., 2003; BURNS; BEDA; HIGHTOWER, 2022). בניגוד לארכיטקטורות המבוססות על הייפרווייזרים, שבהן כל מכונה וירטואלית עוטפת את ה־kernel שלה, קונטיינרים חולקים את ה־kernel של מערכת ההפעלה המארחת, ונשענים על מנגנונים כגון namespaces, cgroups ו־Linux Security Modules (LSM) כדי לספק בידוד לוגי (NIST, 2017).
באופן פורמלי, אבטחת קונטיינרים תלויה בשימור תכונות בידוד ב־kernel המשותף $K$. כל פגיעות שניתנת לניצול ב־$K$ או ברכיבים של ה־runtime, כגון runc או containerd, עלולה לסכן את המארח כולו. אירועים מתועדים היטב, כגון CVE-2019-5736 (NVD, 2019), CVE-2022-0492 (NVD, 2022a) ו־CVE-2022-0185 (NVD, 2022b), מדגימים את היתכנותן של בריחות מקונטיינר באמצעות השחתת זיכרון, מניפולציה לא תקינה של cgroups או החלפת בינאריים של ה־runtime.
דוחות תעשייתיים עדכניים מצביעים על חשיפה גבוהה לפגיעויות בתמונות ציבוריות ועל תצורות לא בטוחות ב־clusters של Kubernetes (AQUA SECURITY, 2023; PALO ALTO NETWORKS, 2024). ברמה הטקטית, המסגרת MITRE ATT&CK for Containers מתעדת טכניקות כגון Escape to Host (T1611) ו־Privileged Container (T1610), ומדגמנת וקטורים חוזרים (MITRE, 2023). מדריכים נורמטיביים כגון NIST SP 800-190 (NIST, 2017), ה־OWASP Docker Security Cheat Sheet (OWASP, 2023) ו־CIS Kubernetes Benchmark (CIS, 2023) מספקים המלצות פרסקריפטיביות, אך ברובן סטטיות.
אנו מבחינים כי פרופילי seccomp ומדיניות AppArmor מאמצים לעיתים קרובות תצורות גנריות כדי לשמור על תאימות רחבה, וכתוצאה מכך מתקבלת מתירנות עודפת (DOCKER, 2024). לפיכך, עולה הצורך במנגנונים פורמליים אשר יתפסו את ההתנהגות הלגיטימית הספציפית של כל יישום, ויאפשרו הן זיהוי סטיות והן הפחתה שיטתית של שטח התקיפה.
ניסחנו את שאלות המחקר הבאות:
RQ1: האם ניתן לממש באופן פורמלי את ההתנהגות הלגיטימית של קונטיינרים ברזולוציה מספקת כדי לזהות סטיות הקשורות לבריחות?
RQ2: האם ניתן לסנתז אוטומטית מדיניות אבטחה מינימלית (seccomp ו־LSM) מתוך מודלים אלה, תוך הפחתת שטח התקיפה מבלי לפגוע בפונקציונליות?
RQ3: מהו ההשפעה של הגישה במונחי ביצועים, מדרגיות ושיעורי שגיאה בסביבות Kubernetes בקנה מידה גדול?
תרומותינו הן: (C1) מודל פורמלי המבוסס על שרשראות מרקוב מסדר משתנה לייצוג רצפי syscalls כשפה הסתברותית; (C2) מנגנון לסינתזה אוטומטית של מדיניות מינימלית הנגזר מן התמיכה האמפירית של ההתפלגויות המוערכות; ו־(C3) ארכיטקטורה ממומשת באמצעות eBPF לניטור בזמן אמת ולאימות אינקרמנטלי ב־kernel.
- רקע ועבודות קשורות
2.1 יסודות הבידוד בקונטיינרים
אנו מגדירים פורמלית קונטיינר כטופל $C = (P, N, G, F)$, כאשר $P$ הוא קבוצת התהליכים, $N$ קבוצת ה־namespaces, $G$ ה־cgroups שהוחלו ו־$F$ מערכת הקבצים השורשית המבודדת. כל הקונטיינרים חולקים את אותו kernel $K$, ולכן ניתן למודל את שטח התקיפה הגלובלי כך:
$$ S = \bigcup_{i=1}^{m} S_i, $$
כאשר $S_i \subseteq \Sigma$ הוא קבוצת ה־syscalls הנגישים לקונטיינר $i$ ו־$\Sigma$ היא האלפבית הכולל של ה־syscalls המוצעים על ידי $K$.
2.2 סיווג הספרות
| קטגוריה | דוגמאות | מגבלות |
|---|---|---|
| הקשחה סטטית | seccomp, AppArmor, SELinux, Pod Security Standards | קונפיגורציה ידנית ומתירנות עודפת |
| ניתוח תמונות | Trivy, Clair | אינו מדגמן התנהגות בזמן ריצה |
| ניטור מבוסס כללים | Falco | תלות בחתימות ותחזוקה מתמשכת |
| מודל התנהגותי | Forrest et al. (1996); Chen et al. (2021) | אינטגרציה מוגבלת עם סינתזה פורמלית של מדיניות |
Forrest et al. (1996) הציגו זיהוי המבוסס על רצפים קצרים של syscalls. עבודות מאוחרות יותר חקרו למידה הסתברותית ויצירה אוטומטית של מדיניות (CHEN et al., 2021). עם זאת, עדיין קיימת פעריות באינטגרציה בין מודל הסתברותי פורמלי, סינתזה אוטומטית של מדיניות מינימלית, ואימות יעיל ב־kernel באמצעות eBPF (LINUX FOUNDATION, 2024).
- מודל האיום והפורמליזציה של הבעיה
אנו מניחים יריב המסוגל להריץ קוד שרירותי בתוך קונטיינר שנפגע, לנצל פגיעויות ידועות ב־runtime או ב־kernel ולבצע תנועה רוחבית באותו node. איננו מניחים פגיעה מוקדמת ב־kernel.
יהי $\Sigma$ קבוצת ה־syscalls. ביצוע מודל כ־$X = (x_1, \dots, x_n)$ כאשר $x_i \in \Sigma$. אנו מגדירים $L \subseteq \Sigma^$ כשפה הסתברותית של רצפים לגיטימיים ומחפשים פונקציה:
$$ f: \Sigma^ \rightarrow {0,1} $$
עם ערבויות:
נכונות: $\Pr[f(X)=0 \mid X \sim L] \ge 1-\epsilon$.
שלמות: $\Pr[f(X)=1 \mid X \sim A] \ge 1-\delta$.
- המתודולוגיה המוצעת
4.1 מודל הסתברותי
אנו מדגמנים את $L$ באמצעות שרשרת מרקוב מסדר $k$:
$$ P(x_i \mid x_{i-1}, \dots, x_{i-k}) = \theta_{c,a}. $$
אנו מעריכים:
$$ \hat{\theta}{c,a} = \frac{C(c,a)+\alpha}{\sum{a’} C(c,a’) + \alpha|\Sigma|}. $$
הלוג־סבירות:
$$ \mathcal{L}(X) = - \sum_{i=k}^{n} \log P(x_i \mid x_{i-1},\dots,x_{i-k}). $$
אנו מחליטים על תקיפה אם $\mathcal{L}(X) > \tau$.
4.2 סינתזה של מדיניות
אנו מגדירים:
$$ \Sigma_L = { a \in \Sigma \mid \exists c : C(c,a) > 0 }. $$
הפחתת שטח התקיפה:
$$ \rho = 1 - \frac{|\Sigma_L|}{|\Sigma|}. $$
דוגמה מפושטת של פרופיל seccomp שנוצר:
{
"defaultAction": "SCMP_ACT_ERRNO",
"syscalls": [
{ "names": ["read", "write", "exit", "futex"], "action": "SCMP_ACT_ALLOW" }
]
}
4.3 מורכבות
אימון ב־$O(N)$; זיכרון במקרה הגרוע $O(|\Sigma|^k)$; זיהוי מקוון ב־$O(1)$ לכל אירוע.
- מימוש
מימשנו מנטר מבוסס eBPF המחובר ל־tracepoints sys_enter ב־kernel Linux 6.6 (LINUX FOUNDATION, 2024). שילבנו אותו עם Kubernetes 1.28 ו־containerd 1.7. הסדר $k=3$ נבחר באמצעות ולידציה צולבת סטרטיפית.
בדיקות הראו עיבוד של 10,000 אירועים/שנייה לכל node, עם תקורת CPU נוספת ממוצעת של 3.7%.
- הערכה ניסויית
סביבה: 120 nodes (Intel Xeon Gold 6230, 128 GB RAM), 1,800 קונטיינרים.
| מדד | ההצעה | Falco |
|---|---|---|
| TPR | 96.1% | 88.4% |
| FPR | 2.8% | 6.7% |
| הפחתת syscalls | 72.4% | N/A |
| תקורת CPU | 3.7% | 4.9% |
השהיה p95 עלתה ב־4.3 ms. התוצאות מצביעות על עליונות מובהקת סטטיסטית ($p < 0.01$) בהשוואה ל־baseline.
- דיון
המודל ההסתברותי לוכד תלות הקשרית בין syscalls, ומפחית את המתירנות הטיפוסית של מדיניות סטטית. אנו בוחנים התחמקות באמצעות מימיקה התנהגותית, המודל באמצעות divergence של Kullback-Leibler:
$$ D_{KL}(P_L | P_A). $$
תקיפות יעילות ממזערות את $D_{KL}$, מה שמניע הרחבה עתידית למודלים היררכיים ולאינטגרציה עם אותות eBPF נוספים (רשת, DNS, יכולות).
- מסקנה ועבודה עתידית
הצענו ארכיטקטורה פורמלית לזיהוי ולהפחתה של בריחות מקונטיינרים המבוססת על מודל הסתברותי ואימות ב־kernel. הדגמנו הפחתה משמעותית בשטח התקיפה ושיעורי זיהוי גבוהים עם תקורה מתונה.
עבודות עתידיות כוללות למידה פדרטיבית בין clusters, אינטגרציה עם פלטפורמות CNAPP וניתוח פורמלי של חוסן אדברסרי.
References
(מוצגים בהתאם ל־ABNT, עם URLs ו־accessed on 13 Apr. 2025.)
AQUA SECURITY. Container Security Report 2023. 2023. Available at: https://www.aquasec.com/resources/container-security-report/. Accessed on: 13 apr. 2025.
BARHAM, P. et al. Xen and the art of virtualization. In: ACM Symposium on Operating Systems Principles (SOSP). 2003. Available at: https://dl.acm.org/doi/10.1145/945445.945462. Accessed on: 13 apr. 2025.
BURNS, B.; BEDA, J.; HIGHTOWER, K. Kubernetes: Up and Running. 3. ed. Sebastopol: O’Reilly, 2022.
CHEN, L. et al. Automated policy generation for container security. In: ACM CCS. 2021. Available at: https://dl.acm.org/doi/10.1145/3460120.3484589. Accessed on: 13 apr. 2025.
CIS. CIS Kubernetes Benchmark v1.27. 2023. Available at: https://www.cisecurity.org/benchmark/kubernetes. Accessed on: 13 apr. 2025.
DOCKER. Docker Engine Security. 2024. Available at: https://docs.docker.com/engine/security/. Accessed on: 13 apr. 2025.
FALCO. Falco Documentation. 2024. Available at: https://falco.org/docs/. Accessed on: 13 apr. 2025.
FORREST, S. et al. A sense of self for Unix processes. In: IEEE Symposium on Security and Privacy. 1996. Available at: https://ieeexplore.ieee.org/document/502675. Accessed on: 13 apr. 2025.
KUBERNETES. Pod Security Standards. 2024. Available at: https://kubernetes.io/docs/concepts/security/pod-security-standards/. Accessed on: 13 apr. 2025.
LINUX FOUNDATION. eBPF Documentation. 2024. Available at: https://ebpf.io/. Accessed on: 13 apr. 2025.
MITRE. ATT&CK for Containers. 2023. Available at: https://attack.mitre.org/matrices/enterprise/containers/. Accessed on: 13 apr. 2025.
NIST. SP 800-190: Application Container Security Guide. 2017. Available at: https://csrc.nist.gov/publications/detail/sp/800-190/final. Accessed on: 13 apr. 2025.
NVD. CVE-2019-5736. 2019. Available at: https://nvd.nist.gov/vuln/detail/CVE-2019-5736. Accessed on: 13 apr. 2025.
NVD. CVE-2022-0492. 2022a. Available at: https://nvd.nist.gov/vuln/detail/CVE-2022-0492. Accessed on: 13 apr. 2025.
NVD. CVE-2022-0185. 2022b. Available at: https://nvd.nist.gov/vuln/detail/CVE-2022-0185. Accessed on: 13 apr. 2025.
OWASP. Docker Security Cheat Sheet. 2023. Available at: https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html. Accessed on: 13 apr. 2025.
PALO ALTO NETWORKS. State of Cloud-Native Security Report. 2024. Available at: https://www.paloaltonetworks.com/prisma/cloud/state-of-cloud-native-security-report. Accessed on: 13 apr. 2025.
GARFINKEL, T. Traps and pitfalls: Practical problems in system call interposition. In: USENIX Security Symposium. 2003. Available at: https://www.usenix.org/conference/12th-usenix-security-symposium/traps-and-pitfalls-practical-problems-system-call. Accessed on: 13 apr. 2025.
HOGLUND, G.; BUTLER, J. Rootkits: Subverting the Windows Kernel. Boston: Addison-Wesley, 2005.