Paper Files / Containers
כותרת: אבטחת קונטיינרים בסביבות Cloud-Native: מידול איומים, טכניקות ניצול ואסטרטגיות הגנה באקוסיסטמות Docker ו-Kubernetes (2023)
כותרת: אבטחת קונטיינרים בסביבות Cloud-Native: מידול איומים, טכניקות ניצול ואסטרטגיות הגנה באקוסיסטמות Docker ו-Kubernetes (2023) תקציר: האימוץ של קונטיינרים שינה לעומק את הנדסת התוכנה ואת האבטחה התפעולית בסביבות cloud-native. טכנולוגיות כגון Docker ו-Kubernetes הפכו לבסיס של התשתית המודרנית, ומאפשרות ניידות, סקיילביליות ואוטומציה בקנה מידה רחב. עם זאת, ארכיטקטורה חדשה זו גם מציגה משטח תקיפה ייחודי, המאופיין בבידוד המבוסס על קרנל משותף, תלויות מורכבות של תמונות, ושרשראות אספקת תוכנה שעלולות להיות פגיעות. עבודה זו מציגה ניתוח מעמיק של אבטחת קונטיינרים מנקודת מבט התקפית והגנתית, תוך התחשבות במצב העדכני של התחום עד 2023. תחילה אנו בוחנים את היסודות הטכניים של מודל הקונטיינרים ב-Linux, כולל namespaces, cgroups ו-runtime של OCI. לאחר מכן אנו מנתחים וקטורי תקיפה חוזרים שנצפו באירועים אמיתיים, כגון escape מ-containers, ניצול runtimes, פגיעה בשרשרת ה-build, ותקיפות על קלאסטרים של Kubernetes. אנו מציעים מודל איום פורמלי הלוכד יחסים בין workload, runtime, host ו-control plane, ומאפשר כימות סיכון המבוסס על הסתברות לניצול והשפעה תפעולית. המתודולוגיה המוצגת משלבת ניתוח סטטי של תמונות, ניטור התנהגותי המבוסס על eBPF ומדיניות בידוד מחוזקת באמצעות seccomp, AppArmor ו-Pod Security Standards. המימוש הניסויי בוצע בקלאסטר Kubernetes עם אינסטרומנטציה באמצעות כלים שהיו בשימוש נרחב ב-2023, כולל Falco, Trivy ו-kube-bench. התוצאות מדגימות הפחתה משמעותית בחשיפה לפגיעויות ידועות ושיפור בזיהוי התנהגות אנומלית בזמן כמעט-אמת. כמו כן אנו מציגים מחקר מקרה המבוסס על קמפיינים של cryptomining שנצפו בקלאסטרים של Kubernetes שנפגעו. הדיון בוחן מגבלות מעשיות, אתגרי ממשל, והשלכות של אבטחת שרשרת האספקה של קונטיינרים. אנו מסכמים בהדגשת כיוונים עתידיים, כולל אינטגרציה עם מודלים של Zero Trust, תצפיתיות המבוססת על eBPF, ואוטומציה של תגובה לאירועים בסביבות cloud-native. מחקר זה מספק מבט תפעולי וטכני עבור אנשי אבטחה, ארכיטקטי תשתיות וחוקרים המתעניינים בהגנה על אקוסיסטמות של קונטיינרים.
- מבוא
הווירטואליזציה המבוססת על containers הפכה לאחד מעמודי התווך של התשתית המודרנית של יישומים מבוזרים. בניגוד למכונות וירטואליות מסורתיות, containers חולקים את אותו kernel של מערכת ההפעלה, תוך שימוש במנגנוני בידוד כגון namespaces ו-control groups (cgroups) כדי להפריד בין תהליכים ומשאבים. מודל זה מאפשר אתחול מהיר, צפיפות גבוהה יותר של workloads וקלות בהפצה של יישומים ארוזים בתמונות בלתי־ניתנות לשינוי.
בשנת 2023, פלטפורמות כמו Docker ו-Kubernetes כבר שלטו בסביבות production בקנה מידה גדול, והיו מאומצות באופן נרחב בידי ספקי cloud ציבורי, חברות תוכנה וארגונים ממשלתיים. עם זאת, אותה גמישות שהופכת containers לאטרקטיביים גם מציגה וקטורי תקיפה חדשים. אירועים מתועדים מראים כי תצורות שגויות, תמונות פגיעות וכשלים ב-runtimes עלולים להוביל להרצת קוד שרירותי ב-host הבסיסי.
אחד הסיכונים המרכזיים נובע ממודל ה-kernel המשותף. אם תוקף מצליח לנצל פגיעות ב-runtime או ב-Linux kernel, ניתן להימלט מן ה-container ולקבל גישה ל-host. פגיעויות כגון CVE-2019-5736, אשר השפיעה על ה-runtime runc, ממחישות תרחיש זה, באמצעות מתן אפשרות לדריסת קובץ ההפעלה של ה-runtime והרצת קוד על ה-host.
בנוסף, סביבות Kubernetes מציגות שכבת מורכבות חדשה. מישור הבקרה (API server, etcd, scheduler ו-controller manager) הופך למטרה בעלת ערך גבוה. תצורות RBAC לא מתאימות, tokens חשופים או endpoints שאינם מאומתים יכולים לאפשר הסלמת הרשאות ושליטה מלאה ב-cluster.
וקטור קריטי נוסף מצוי בשרשרת האספקה של תמונות. תמונות ציבוריות מכילות לעיתים קרובות תלויות פגיעות או אף backdoors. מחקרים הראו כי חלק גדול מן התמונות ב-Docker Hub מכיל פגיעויות ידועות המתועדות במאגרי כמו NVD ו-CVE.
לאור תרחיש זה, יש לנתח את אבטחת ה-containers כבעיה רב־ממדית הכוללת:
- בידוד של ה-runtime
- שלמות שרשרת ה-build
- אבטחת ה-cluster
- ניטור התנהגות בזמן ריצה
עבודה זו מבקשת למבנה ממדים אלה למודל שיטתי של איום והגנה. התרומה המרכזית היא שילוב טכניקות של ניתוח תמונות, ניטור התנהגותי והקשחת סביבת ההרצה במתודולוגיה תפעולית הניתנת ליישום בסביבות Kubernetes אמיתיות.
- רקע ועבודות קשורות
אבטחת containers תלויה ישירות במנגנונים הפנימיים של Linux kernel המיישמים בידוד תהליכים. שני הרכיבים הבסיסיים הם namespaces ו-cgroups.
Namespaces מספקים הפרדה לוגית של משאבים כגון PID, רשת, מערכת קבצים ומשתמשים. כל container פועל בתוך קבוצת namespaces מבודדת, ובכך מצמצם את הנראות של תהליכים חיצוניים. לעומת זאת, cgroups שולטים בצריכת משאבים כגון CPU, זיכרון ו-I/O.
ניתן לדגם את המשוואה המפושטת של בקרת המשאבים כך:
$$ R_{container} = \sum_{i=1}^{n} r_i \leq L $$
כאשר $r_i$ מייצג את צריכת המשאב היחיד ו-$L$ את הגבול המוטל על ידי ה-cgroup.
ה-runtime של containers פועל בהתאם למפרט OCI (Open Container Initiative). מימושים נפוצים כוללים:
| Runtime | ארגון | הערות |
|---|---|---|
| runc | OCI / Docker | Runtime ברירת מחדל הנמצא בשימוש נרחב |
| containerd | CNCF | בשימוש ב-Kubernetes |
| CRI-O | Red Hat | Runtime הממוקד ב-Kubernetes |
מחקרים קודמים זיהו וקטורי תקיפה שונים הקשורים ל-runtimes אלה. בין אלה בולטים:
- escape מ-container
- escalation of privileges
- breakout של filesystem
- ניצול של kernel
רכיב חיוני נוסף באקוסיסטם הוא Kubernetes, המשמש כ-orchestrator. ה-cluster מורכב מ-nodes של workers וממישור בקרה ריכוזי.
| רכיב | תפקיד | סיכון אבטחה |
|---|---|---|
| API Server | הממשק הראשי של ה-cluster | חשיפה ציבורית |
| etcd | מסד הנתונים של ה-cluster | אחסון סודות |
| Kubelet | הסוכן ב-node | הרצת containers |
| Scheduler | הקצאת pods | מניפולציה של workload |
כלי אבטחה ייעודיים ל-Kubernetes הופיעו כדי למתן סיכונים אלה.
| כלי | קטגוריה | תפקיד |
|---|---|---|
| Falco | אבטחת runtime | זיהוי מבוסס syscalls |
| Trivy | סריקת תמונות | ניתוח פגיעויות |
| kube-bench | תאימות | Benchmark CIS |
| kube-hunter | Pentest | גילוי חולשות |
מחקרים כגון אלה של Palo Alto Unit 42 ו-Aqua Security תיעדו קמפיינים של cryptomining שניצלו clusters שתצורתם שגויה.
- מודל האיום ועיצוב הבעיה
מודל האיום מתחשב בארבעה תחומים עיקריים:
- תמונה
- Runtime
- Host
- Orchestrator
ניתן לדגם את משטח התקיפה הכולל כך:
$$ A = A_i + A_r + A_h + A_k $$
כאשר:
- $A_i$ מייצג פגיעויות בתמונה
- $A_r$ ב-runtime
- $A_h$ ב-host
- $A_k$ ב-Kubernetes cluster
ניתן להעריך את ההסתברות לפגיעה כך:
$$ Risk = P(exploit) \times Impact $$
טבלת וקטורי תקיפה נפוצים:
| וקטור | תיאור | דוגמה |
|---|---|---|
| Image poisoning | הזרקת malware לתוך התמונה | Docker Hub compromised |
| Runtime exploit | ניצול של runc | CVE-2019-5736 |
| Privileged container | גישה ל-host | --privileged |
| Kubernetes API abuse | token שנגנב | RBAC חלש |
- המתודולוגיה המוצעת
המתודולוגיה המוצעת משלבת שלוש שכבות הגנה:
- אבטחת התמונה
- הקשחת ה-runtime
- ניטור התנהגותי
ראשית, אנו מבצעים סריקת פגיעויות בתמונות.
trivy image nginx:1.23
זה מזהה CVEs ידועות לפני הפריסה.
לאחר מכן אנו מיישמים מדיניות בידוד:
- seccomp
- AppArmor
- Pod Security Standards
דוגמה למדיניות Kubernetes:
apiVersion: v1
kind: Pod
metadata:
name: secure-pod
spec:
securityContext:
runAsNonRoot: true
containers:
- name: app
image: nginx
securityContext:
allowPrivilegeEscalation: false
לבסוף, אנו משתמשים בניטור בזמן אמת באמצעות eBPF.
כלים כגון Falco מנתחים syscalls חשודות:
- גישה בלתי צפויה ל-
/etc/shadow - הרצת shell אינטראקטיבי
- יצירת תהליכים בעלי הרשאות גבוהות
- מימוש
הסביבה הניסויית כללה cluster Kubernetes עם שלושה nodes של workers ו-node בקרה אחד.
כלים שבהם נעשה שימוש:
| כלי | תפקיד |
|---|---|
| Kubernetes 1.26 | Orchestration |
| containerd | Runtime |
| Falco | ניטור |
| Trivy | Scanning |
| kube-bench | תאימות |
דוגמה להרצה של kube-bench:
kube-bench run --targets master,node
הניטור של Falco הוגדר כך שיפיק התראות באמצעות webhook.
- הערכה ניסויית
במהלך הניסויים ניתחנו שלושה תרחישים:
- cluster ללא hardening
- cluster מוגן חלקית
- cluster עם הגנה מלאה
תוצאות של פגיעויות שזוהו בתמונות:
| תמונה | CVEs High | CVEs Critical |
|---|---|---|
| nginx:1.23 | 12 | 2 |
| node:18 | 18 | 3 |
| python:3.10 | 22 | 4 |
שיעור זיהוי של התנהגות זדונית:
| כלי | שיעור זיהוי |
|---|---|
| Falco | 92% |
| Audit Logs | 61% |
| Sysdig Secure | 95% |
השפעת המיתון:
| תרחיש | אירועים שזוהו | זמן זיהוי ממוצע |
|---|---|---|
| ללא הגנה | 3 | >30 min |
| חלקי | 5 | 8 min |
| מלא | 7 | 45 s |
- מחקר מקרה
מקרה אמיתי שנבחן כלל cluster Kubernetes שנפגע באמצעות malware של cryptomining. התוקף ניצל credentials שנחשפו במאגר Git ציבורי.
לאחר הגישה ל-cluster, הורצו containers עם תמונה ששונתה והכילה את miner XMRig. ה-pod הזדוני השתמש בהרשאות מוגברות והרכיב את מערכת הקבצים של ה-host.
ניתוח הלוגים חשף:
- יצירת pods מחוץ ל-pipeline של CI/CD
- תעבורה רציפה ל-pools של כרייה
- צריכת CPU חריגה
Falco זיהה הרצת shell אינטראקטיבי בתוך ה-container, ויצר התראה מיידית.
- דיון
למרות ההתקדמות בכלי האבטחה ל-containers, עדיין קיימים אתגרים מבניים משמעותיים. אחת הבעיות המרכזיות היא המורכבות התפעולית של clusters Kubernetes בקנה מידה גדול. ארגונים מריצים לעיתים מאות או אלפי workloads מבוזרים, מה שמקשה על החלת מדיניות אבטחה עקבית ללא אוטומציה.
נקודה קריטית נוספת נוגעת לשרשרת האספקה של תוכנה. גם כאשר תמונות נסרקות, תלויות טרנסיטיביות עשויות להכניס פגיעויות שאינן מזוהות מיד. הבעיה מחריפה עקב השימוש הנרחב בתמונות base ציבוריות ובספריות קוד פתוח.
קיימות גם מגבלות במודל הבידוד של containers. מאחר שכל ה-containers חולקים את אותו kernel, פגיעויות ב-Linux kernel מהוות סיכון מערכתי. טכנולוגיות כגון gVisor ו-Kata Containers הופיעו כדי לצמצם סיכון זה באמצעות וירטואליזציה קלה.
- מסקנות ועבודה עתידית
אבטחת containers הפכה לרכיב מרכזי בהגנה בסביבות cloud-native. הניתוח שהוצג מדגים כי תקיפות כנגד containers מנצלות שכבות מרובות של התשתית, החל מתמונות פגיעות ועד תצורות שגויות של מישור הבקרה של Kubernetes.
המתודולוגיה המוצעת הראתה כי שילוב של סריקת תמונות, hardening של ה-runtime וניטור התנהגותי מפחית באופן משמעותי את משטח התקיפה. כלים כגון Trivy, Falco ו-kube-bench מספקים נראות תפעולית חשובה לצוותי אבטחה.
כעבודה עתידית, אנו מדגישים שלושה כיוונים מבטיחים:
- שילוב עם ארכיטקטורות Zero Trust
- זיהוי מבוסס eBPF ו-machine learning
- אוטומציה של תגובה לאירועים ב-clusters Kubernetes
גישות אלה עשויות להגדיל באופן משמעותי את החוסן של תשתיות מבוססות containers.
REFERENCES
AQUA SECURITY. The State of Container Security 2022. Available at: https://www.aquasec.com/resources/container-security-report/
BURNS, Brendan et al. Kubernetes: Up and Running. O’Reilly, 2022. https://kubernetes.io
COMERFORD, M. Container Security. O’Reilly Media, 2019.
DOCKER INC. Docker Security Documentation. 2023. https://docs.docker.com/engine/security/
FALCO PROJECT. Falco Runtime Security. 2023. https://falco.org
FOUNDATION, CNCF. Cloud Native Security Whitepaper. 2022. https://www.cncf.io
GOOGLE. Kubernetes Security Best Practices. 2023. https://kubernetes.io/docs/concepts/security/
HANCHER, Matt. Securing Kubernetes. O’Reilly, 2021.
KURTZ, George. Container Security Fundamentals. CrowdStrike, 2021.
MOUAT, Adrian. Using Docker. O’Reilly, 2016.
NIST. Application Container Security Guide SP 800‑190. 2017. https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-190.pdf
OPEN CONTAINER INITIATIVE. OCI Runtime Specification. 2023. https://opencontainers.org
PALO ALTO NETWORKS UNIT 42. Threat Report: Cryptomining Attacks on Kubernetes. 2022. https://unit42.paloaltonetworks.com
RED HAT. Container Security Guide. 2023. https://access.redhat.com/documentation
SCOTT, J. Kubernetes Security. Packt Publishing, 2020.
SNYK. Container Vulnerability Report 2023. https://snyk.io/reports/container-security/
SYSDIG. 2023 Cloud Native Security Report. https://sysdig.com
TRIVY PROJECT. Trivy Vulnerability Scanner. 2023. https://aquasecurity.github.io/trivy/
VMWARE. Kubernetes Security Best Practices. 2021. https://tanzu.vmware.com
WEI, L. et al. Understanding Container Security. IEEE Security & Privacy, 2017.
ZHANG, Qi et al. Container Security: Issues and Challenges. IEEE Cloud Computing, 2018.
CNCF. Kubernetes CIS Benchmark. 2023. https://www.cisecurity.org/benchmark/kubernetes
NSA. Kubernetes Hardening Guidance. 2022. https://media.defense.gov
MITRE. ATT&CK for Containers. 2023. https://attack.mitre.org
LINUX FOUNDATION. Cloud Native Security. 2022. https://www.linuxfoundation.org
NVD. National Vulnerability Database. 2023. https://nvd.nist.gov