← חזרה למאמרים

Paper Files / Containers

כותרת: אבטחת קונטיינרים בסביבות Cloud-Native: מידול איומים, טכניקות ניצול ואסטרטגיות הגנה באקוסיסטמות Docker ו-Kubernetes (2023)

ContainersHE

כותרת: אבטחת קונטיינרים בסביבות 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. מחקר זה מספק מבט תפעולי וטכני עבור אנשי אבטחה, ארכיטקטי תשתיות וחוקרים המתעניינים בהגנה על אקוסיסטמות של קונטיינרים.

  1. מבוא

הווירטואליזציה המבוססת על 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 כבעיה רב־ממדית הכוללת:

עבודה זו מבקשת למבנה ממדים אלה למודל שיטתי של איום והגנה. התרומה המרכזית היא שילוב טכניקות של ניתוח תמונות, ניטור התנהגותי והקשחת סביבת ההרצה במתודולוגיה תפעולית הניתנת ליישום בסביבות Kubernetes אמיתיות.

  1. רקע ועבודות קשורות

אבטחת 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 אלה. בין אלה בולטים:

רכיב חיוני נוסף באקוסיסטם הוא 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 שתצורתם שגויה.

  1. מודל האיום ועיצוב הבעיה

מודל האיום מתחשב בארבעה תחומים עיקריים:

  1. תמונה
  2. Runtime
  3. Host
  4. Orchestrator

ניתן לדגם את משטח התקיפה הכולל כך:

$$ A = A_i + A_r + A_h + A_k $$

כאשר:

ניתן להעריך את ההסתברות לפגיעה כך:

$$ 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 חלש
  1. המתודולוגיה המוצעת

המתודולוגיה המוצעת משלבת שלוש שכבות הגנה:

  1. אבטחת התמונה
  2. הקשחת ה-runtime
  3. ניטור התנהגותי

ראשית, אנו מבצעים סריקת פגיעויות בתמונות.

trivy image nginx:1.23

זה מזהה CVEs ידועות לפני הפריסה.

לאחר מכן אנו מיישמים מדיניות בידוד:

דוגמה למדיניות Kubernetes:

apiVersion: v1
kind: Pod
metadata:
  name: secure-pod
spec:
  securityContext:
    runAsNonRoot: true
  containers:
  - name: app
    image: nginx
    securityContext:
      allowPrivilegeEscalation: false

לבסוף, אנו משתמשים בניטור בזמן אמת באמצעות eBPF.

כלים כגון Falco מנתחים syscalls חשודות:

  1. מימוש

הסביבה הניסויית כללה 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.

  1. הערכה ניסויית

במהלך הניסויים ניתחנו שלושה תרחישים:

  1. cluster ללא hardening
  2. cluster מוגן חלקית
  3. 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
  1. מחקר מקרה

מקרה אמיתי שנבחן כלל cluster Kubernetes שנפגע באמצעות malware של cryptomining. התוקף ניצל credentials שנחשפו במאגר Git ציבורי.

לאחר הגישה ל-cluster, הורצו containers עם תמונה ששונתה והכילה את miner XMRig. ה-pod הזדוני השתמש בהרשאות מוגברות והרכיב את מערכת הקבצים של ה-host.

ניתוח הלוגים חשף:

Falco זיהה הרצת shell אינטראקטיבי בתוך ה-container, ויצר התראה מיידית.

  1. דיון

למרות ההתקדמות בכלי האבטחה ל-containers, עדיין קיימים אתגרים מבניים משמעותיים. אחת הבעיות המרכזיות היא המורכבות התפעולית של clusters Kubernetes בקנה מידה גדול. ארגונים מריצים לעיתים מאות או אלפי workloads מבוזרים, מה שמקשה על החלת מדיניות אבטחה עקבית ללא אוטומציה.

נקודה קריטית נוספת נוגעת לשרשרת האספקה של תוכנה. גם כאשר תמונות נסרקות, תלויות טרנסיטיביות עשויות להכניס פגיעויות שאינן מזוהות מיד. הבעיה מחריפה עקב השימוש הנרחב בתמונות base ציבוריות ובספריות קוד פתוח.

קיימות גם מגבלות במודל הבידוד של containers. מאחר שכל ה-containers חולקים את אותו kernel, פגיעויות ב-Linux kernel מהוות סיכון מערכתי. טכנולוגיות כגון gVisor ו-Kata Containers הופיעו כדי לצמצם סיכון זה באמצעות וירטואליזציה קלה.

  1. מסקנות ועבודה עתידית

אבטחת containers הפכה לרכיב מרכזי בהגנה בסביבות cloud-native. הניתוח שהוצג מדגים כי תקיפות כנגד containers מנצלות שכבות מרובות של התשתית, החל מתמונות פגיעות ועד תצורות שגויות של מישור הבקרה של Kubernetes.

המתודולוגיה המוצעת הראתה כי שילוב של סריקת תמונות, hardening של ה-runtime וניטור התנהגותי מפחית באופן משמעותי את משטח התקיפה. כלים כגון Trivy, Falco ו-kube-bench מספקים נראות תפעולית חשובה לצוותי אבטחה.

כעבודה עתידית, אנו מדגישים שלושה כיוונים מבטיחים:

גישות אלה עשויות להגדיל באופן משמעותי את החוסן של תשתיות מבוססות 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