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

Paper Files / Containers

כותרת: ארכיטקטורה פורמלית ותפעולית לזיהוי ולבלימת איומים בסביבות מבוססות קונטיינרים הנשענות על Kubernetes

ContainersHE

כותרת: ארכיטקטורה פורמלית ותפעולית לזיהוי ולבלימת איומים בסביבות מבוססות קונטיינרים הנשענות על Kubernetes תקציר: האימוץ של ארכיטקטורות cloud-native מבוססות קונטיינרים שינה באופן עמוק את האופן שבו יישומים מבוזרים מתוכננים, נפרסים ומתרחבים. Kubernetes התבסס כמערכת התזמור המרכזית לניהול workloads קונטיינריים, ומציע אבסטרקציות דקלרטיביות להגדלה, סבילות לתקלות ואוטומציה תפעולית. עם זאת, שכבת ההפשטה הנוספת הזו מציגה וקטורי תקיפה חדשים ומרחיבה את משטח החשיפה, במיוחד בסביבות המאופיינות בצפיפות גבוהה של קונטיינרים ארעיים ובשרשראות אספקה מורכבות של images. ניצול פגיעויות ב-runtimes של קונטיינרים, תצורות לא מאובטחות של APIs לתזמור וקמפיינים אוטומטיים של כריית קריפטו ב-clusters שמוגדרים באופן שגוי מדגימים כי מנגנוני אבטחה מסורתיים אינם מספקים כדי להתמודד עם האופי הדינמי של סביבות אלו. בעבודה זו אנו מציעים ארכיטקטורה פורמלית ותפעולית לזיהוי ולבלימת איומים ב-clusters של Kubernetes, המשלבת מודל מתמטי של מצבי המערכת עם מנגנוני תצפיתיות מעשיים ותגובה אוטומטית. אנו פורמליזים את הסביבה הקונטיינרית כמערכת מעברים מסומנים $LTS = (S, A, \rightarrow)$, המאפשרת לבטא תכונות של שלמות ואי-התערבות הקשורות לאינטראקציה בין קונטיינרים, nodes של ה-cluster ונתיב הבקרה. על בסיס תיאורטי זה, מימשנו pipeline אבטחתי רב-שכבתי המורכב מניתוח סטטי של images (Trivy ו-YARA), מדיניות קבלה דקלרטיבית באמצעות Open Policy Agent/Gatekeeper, ניטור התנהגותי ברמת הקרנל עם eBPF באמצעות Falco, ומנגנוני בידוד אוטומטיים באמצעות NetworkPolicies ובקרות אדמיניסטרטיביות של Kubernetes. הארכיטקטורה הוערכה בניסוי ב-cluster עם 120 nodes ו-2,400 pods פעילים, שבו הודמו תרחישי תקיפה שונים, כולל ניסיון escape מקונטיינר, הרצת miners של מטבעות קריפטוגרפיים ותנועה רוחבית באמצעות credentials שנפגעו. התוצאות מצביעות על שיעור זיהוי ממוצע של 96.3% עם שיעור false positive של 3.8%, וכן על הפחתות משמעותיות במדדים התפעוליים MTTD ו-MTTR. ממצאים אלה מדגימים כי השילוב בין פורמליזציה תיאורטית לבין טלמטריה ברמת נמוכה המבוססת על eBPF מהווה גישה יעילה לחיזוק האבטחה התפעולית של פלטפורמות cloud-native בקנה מידה גדול.

1. מבוא

וירטואליזציה קלה מבוססת קונטיינרים הפכה לפרדיגמה הדומיננטית להרצת יישומים מבוזרים בסביבות cloud-native. בניגוד למכונות וירטואליות מסורתיות, קונטיינרים משתפים את ליבת מערכת ההפעלה המארחת ומנצלים מנגנוני בידוד המסופקים על ידי ליבת Linux עצמה, כגון namespaces, control groups ‏(cgroups), capabilities ומסנני seccomp. מודל זה מאפשר אתחול מהיר במיוחד, צפיפות גבוהה של workloads וצריכה מופחתת של משאבי מחשוב (MERKEL, 2014).

התבססותו של Kubernetes כפלטפורמת התזמור הסטנדרטית הרחיבה באופן משמעותי את אימוץ הקונטיינרים בסביבות ארגוניות. המערכת מציגה אבסטרקציות דקלרטיביות לניהול יישומים מבוזרים, לרבות pods, deployments, services ובקרים האחראים להבטחת המצב הרצוי של ה-cluster ‏(BURNS; BEDA; HIGHTOWER, 2019). ארכיטקטורה זו מקלה על סקיילינג אוטומטי ועל התאוששות מכשלים, אך גם מציגה מישור בקרה מבוזר שיש להגן עליו מפני ניצול לרעה ופשרה.

למרות היתרונות התפעוליים, האימוץ ההמוני של קונטיינרים הרחיב את משטח התקיפה בתשתיות מודרניות. דוגמה שנדונה בהרחבה הייתה פגיעות CVE‑2019‑5736 ב-runtime runc, שאפשרה להחליף את הבינרי של ה-runtime מתוך הקונטיינר ובאופן פוטנציאלי להריץ קוד שרירותי על ה-host (OPEN CONTAINERS INITIATIVE, 2019). במקביל, קמפיינים אוטומטיים של תקיפה ניצלו מופעי Docker API חשופים ו-clusters Kubernetes שהוגדרו באופן שגוי לצורך פריסה של כורי מטבעות קריפטוגרפיים וכלי תנועה רוחבית (PALO ALTO NETWORKS, 2021).

מעבר לפגיעויות ספציפיות, המורכבות המבנית של סביבות Kubernetes מציגה אתגרי ניטור חדשים. Cluster ייצור יכול להכיל אלפי pods ארעיים, הנוצרים ונמחקים באופן דינמי על ידי בקרים אוטומטיים. בהקשר זה, מנגנונים מסורתיים המבוססים רק על logs או על ניתוח רשת נעשים בלתי מספקים כדי ללכוד התנהגויות זדוניות בזמן אמת (ZHANG et al., 2018).

מטריצת MITRE ATT&CK for Containers מזהה מגוון טכניקות תקיפה ייחודיות לאקוסיסטם זה, כולל escape מקונטיינר, שימוש לרעה ב-credentials של ServiceAccount, פריסה של images זדוניות ופשרה של מישור הבקרה (MITRE, 2023). וקטורים אלה מחייבים מנגנוני גילוי המסוגלים לקשר בין אירועים המגיעים משכבות שונות של המערכת.

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

שאלות המחקר המנחות עבודה זו הן:

RQ1: כיצד לדגמן באופן פורמלי את התנהגות הקונטיינרים ואת האינטראקציות שלהם עם ה-host ועם מישור הבקרה של Kubernetes באופן שניתן לאימות?

RQ2: מהי היעילות של מנגנון היברידי המשלב ניתוח סטטי של images, ניטור התנהגותי בזמן אמת ופוליסות דקלרטיביות של admission?

RQ3: מה ההשפעה הכמותית של ארכיטקטורה זו על מדדי אבטחה תפעוליים MTTD ‏(Mean Time to Detect) ו-MTTR ‏(Mean Time to Respond)?

התרומות העיקריות של עבודה זו הן שלוש. ראשית, אנו פורמליזים את הסביבה הקונטיינרית כמערכת מעברים מסומנים $LTS = (S, A, \rightarrow)$, המאפשרת לבטא תכונות של שלמות ושל אי־התערבות בין תהליכים. שנית, פיתחנו ארכיטקטורה היברידית המשלבת observability מבוססת eBPF עם פוליסות אבטחה דקלרטיביות וניתוח images. שלישית, ביצענו הערכה ניסויית ב-cluster Kubernetes בקנה מידה גדול, המדגימה שיפורים מדידים במדדי גילוי ותגובה תפעוליים.

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

קונטיינרים של Linux משתמשים במנגנוני בידוד המסופקים על ידי ה-kernel כדי להפריד בין תהליכים ומשאבים בסביבות הרצה שונות. Namespaces שולטים בנראות של משאבים כגון תהליכים ($PID$), רשת ($NET$), מערכת קבצים ($MNT$), hostname ‏($UTS$) ותקשורת בין־תהליכית ($IPC$). לעומתם, control groups ‏(cgroups) מגבילים את צריכת המשאבים כגון CPU, זיכרון ו-I/O ‏(MERKEL, 2014; POHLACK; SIEGEL, 2019).

ניתן לייצג באופן פורמלי קונטיינר $C_i$ כטופל:

$$ C_i = (P_i, N_i, R_i, I_i) $$

כאשר $P_i$ מייצג את קבוצת התהליכים הרצים, $N_i$ את קבוצת ה-namespaces המשויכים, $R_i$ את מגבלות המשאבים שהוגדרו על ידי cgroups ו-$I_i$ את image הבסיס שממנו נוצר הקונטיינר.

מחקרים שונים ניתחו את השלכות האבטחה של מודל זה. Bui (2015) השווה בין קונטיינרים למכונות וירטואליות מנקודת מבט של בידוד וביצועים, והדגים כי לקונטיינרים overhead חישובי נמוך יותר, אך הם מציעים בידוד חלש יותר ביחס ל-kernel המארח. Shu et al. (2017) ערכו מחקר אמפירי על פגיעויות הקיימות ב-images ציבוריים של Docker Hub, וזיהו כי חלק משמעותי מהם הכיל חבילות עם פגיעויות מוכרות.

גם אבטחת סביבות Kubernetes נחקרה בהרחבה בספרות האחרונה. Zhang et al. (2018) ניתחו סיכוני קונפיגורציה והרשאות במישור הבקרה, בעוד Rahman et al. (2020) חקרו פגיעויות ב-pipelines של בניית images. מחקרים אלה מדגישים את חשיבות האבטחה בשרשרת אספקת התוכנה.

כלי ניטור התנהגותי הופיעו כמנגנון יעיל לגילוי פעילויות חשודות בקונטיינרים. Falco, פרויקט שפותח במקור על ידי Sysdig ולאחר מכן אומץ בידי Cloud Native Computing Foundation, משתמש ב-eBPF כדי ליירט אירועי kernel Linux ולזהות דפוסי התנהגות העלולים להיות זדוניים (FALCO, 2023). גישה מסוג זה מאפשרת לצפות בקריאות מערכת כגון הרצת תהליכים, גישה לקבצים רגישים או מניפולציה של namespaces.

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

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

3. מודל האיום והמשגה פורמלית של הבעיה

אנו מניחים מודל תוקף בעל היכולות הבאות:

  1. הרצת קוד שרירותי בתוך קונטיינר שנפרץ.
  2. גישה לרשת הפנימית של ה-cluster Kubernetes.
  3. ניסיון להעלאת הרשאות באמצעות ניצול פגיעויות ב-kernel או קונפיגורציית RBAC שאינה הולמת.

איננו מניחים פשרה ראשונית של מישור הבקרה של Kubernetes, אף שאנו מביאים בחשבון אפשרות של שימוש לרעה ב-credentials של ServiceAccount המשויכים ל-pods.

אנו פורמליזים את התנהגות המערכת כמערכת מעברים מסומנים:

$$ LTS = (S, A, \rightarrow) $$

כאשר:

המצבים $S$ כוללים קונפיגורציית pods, הרשאות RBAC, מצב הרשת ומשאבים פעילים בכל node. הפעולות $A$ כוללות אירועים כגון יצירת pods, הרצת פקודות, mount של volumes וחיבורי רשת.

אנו מגדירים תת־קבוצה $A_{esc}$ המכילה פעולות הקשורות לניסיונות escape מקונטיינר או להעלאת הרשאות. תכונת שלמות יכולה אז להיות מבוטאת כך:

$$ \forall s \in S, \neg \exists a \in A_{esc} : s \xrightarrow{a} s’ \land compromised(s’) $$

מטרת מנגנון הגילוי היא לזהות מעברים השייכים לתת־הקבוצה $A_{mal} \subseteq A$ המצביעים על התנהגות זדונית, תוך מזעור שיעור ה-false positives.

4. המתודולוגיה המוצעת

הארכיטקטורה המוצעת מורכבת מארבע שכבות משלימות של בקרה על האבטחה.

שכבה מטרה כלים
קדם־פריסה ניתוח פגיעויות ב-images Trivy, YARA
Admission אימות פוליסות אבטחה OPA/Gatekeeper
הרצה ניטור התנהגותי Falco (eBPF)
תגובה הכלה אוטומטית NetworkPolicy, cordon/drain

ניתוח ה-images משתמש בסורק Trivy כדי לזהות פגיעויות מוכרות בחבילות ותלויות (AQUA SECURITY, 2023). כללי YARA משמשים לזיהוי תבניות המשויכות למלוואר או לכורי מטבעות קריפטוגרפיים.

בשלב ה-admission, פוליסות המוגדרות ב-Rego מוערכות על ידי Open Policy Agent המשולב ב-Gatekeeper, ומונעות יצירה של משאבים המפרים דרישות אבטחה (OPA, 2023).

אלגוריתם גילוי התנהגותי

Input: flux of events E
Output: set of alerts A

for each event e in E:
    if match_rule(e, Sigma_rules):
        A.add(e)
    else if anomaly_score(e) > θ:
        A.add(e)

return A

המורכבות המשוערת של האלגוריתם היא $O(n)$ עבור $n$ אירועים מנוטרים, בהנחה של אינדוקס יעיל של הכללים.

אלגוריתם תגובה אוטומטית

Input: alert a

if a.severity >= HIGH:
    isolate_pod(a.pod)
    revoke_token(a.serviceAccount)
    snapshot_forensics(a.node)

התגובה האוטומטית שואפת לבלום במהירות את האיום מבלי לשבש לחלוטין את פעולת ה-cluster.

5. מימוש

הארכיטקטורה יושמה בסביבת Kubernetes גרסה 1.28 תוך שימוש ב-containerd 1.7 כ-runtime של קונטיינרים. ניטור אירועי ה-kernel בוצע באמצעות Falco 0.36 תוך שימוש ב-eBPF.

דוגמה לכלל Falco ששימש לגילוי ניסיון escape:

- rule: Container Escape Attempt
  condition: container and evt.type=execve and proc.name=nsenter
  output: "Possível tentativa de escape (user=%user.name container=%container.id)"
  priority: CRITICAL

פוליסת admission שיושמה באמצעות OPA:

deny[msg] {
  input.request.kind.kind == "Pod"
  input.request.object.spec.containers[_].securityContext.privileged == true
  msg := "Execução de contêiner privilegiado não permitida"
}

logs ואירועי אבטחה נאספו ב-Elastic Stack לצורך קורלציה וניתוח מאוחר יותר.

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

הסביבה הניסויית כללה cluster Kubernetes עם 120 nodes פיזיים המצוידים במעבדי Intel Xeon Gold ו-256 GB של זיכרון RAM לכל node. ה-cluster הריץ כ-2,400 pods המפוזרים בין namespaces שונים.

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

  1. ניסיון escape תוך ניצול CVE‑2019‑5736.
  2. פריסה של כורה מטבעות קריפטוגרפיים XMRig.
  3. תנועה רוחבית תוך שימוש ב-credentials שנפרצו.

תוצאות מצרפיות מוצגות בטבלה הבאה.

מדד Baseline (logs) הארכיטקטורה המוצעת
שיעור גילוי 71,4% 96,3%
False positive 5,9% 3,8%
MTTD 14,2 דק’ 3,1 דק’
MTTR 27,6 דק’ 9,6 דק’
overhead CPU ממוצע 1,9% 4,7%

התוצאות מצביעות על כך ש-observability מבוססת אירועי kernel משפרת באופן משמעותי את יכולת הגילוי של פעילויות זדוניות, גם בסביבות דינמיות מאוד.

7. מחקר מקרה

כדי להעריך את הארכיטקטורה בתרחיש ריאליסטי, הדמינו פשרה של יישום web פגיע להרצת קוד מרחוק. לאחר ניצול הפגיעות, התוקף הריץ פקודה אינטראקטיבית בתוך הקונטיינר:

kubectl exec -it web-pod -- /bin/sh

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

מנגנון התגובה האוטומטית הפעיל באופן מיידי policy רשת מגבילה שחסמה תעבורת יציאה מה-pod שנפרץ. בו־זמנית, token של ה-ServiceAccount המשויך בוטל, ונאסף snapshot של ה-node לצורך ניתוח פורנזי.

הניתוח המאוחר זיהה ניסיון גישה ל-socket של ה-runtime ב-/var/run/docker.sock, דבר המצביע על אפשרות לניסיון העלאת הרשאות.

8. דיון

התוצאות הניסיוניות מדגימות כי ניטור ברמת ה-kernel תוך שימוש ב-eBPF יעיל במיוחד בזיהוי התנהגויות המשויכות לטכניקות escape מקונטיינר ולהרצת פקודות בלתי צפויות. סוג זה של נראות אינו ניתן להשגה באופן בלעדי מתוך logs של היישום או טלמטריית רשת.

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

מבחינה תפעולית, אנו ממליצים על שלוש פרקטיקות עיקריות לצוותי אבטחה המפעילים סביבות Kubernetes:

פרקטיקות אלה משלימות את הארכיטקטורה המוצעת ומצמצמות באופן משמעותי את משטח התקיפה.

9. מסקנה

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

הפורמליזציה של המערכת כמערכת מעברים מסומנים אפשרה לבטא תכונות אבטחה הקשורות לשלמות ה-host וה-cluster. המימוש הניסויי הדגים כי השילוב של ניתוח images, פוליסות admission וניטור ברמת ה-kernel מספק שיפורים מהותיים במדדי אבטחה תפעוליים.

התוצאות שהתקבלו מצביעות על כך שגישות היברידיות המשלבות תיאוריה ופרקטיקה מהוות כיוון מבטיח לחיזוק אבטחת תשתיות cloud-native בקנה מידה גדול.

References

AQUA SECURITY. Trivy: Vulnerability Scanner for Containers and Filesystems. 2023. Available at: https://github.com/aquasecurity/trivy. Accessed on: 10 out. 2023.

BUI, Thanh. Analysis of Docker Security. arXiv, 2015. Available at: https://arxiv.org/abs/1501.02967. Accessed on: 10 out. 2023.

BURNS, Brendan; BEDA, Joe; HIGHTOWER, Kelsey. Kubernetes: Up and Running. Sebastopol: O’Reilly Media, 2019. Available at: https://www.oreilly.com/library/view/kubernetes-up-and/9781492046523/. Accessed on: 10 out. 2023.

CNCF. Falco Runtime Security. 2023. Available at: https://falco.org. Accessed on: 10 out. 2023.

FALCO. Falco Documentation. 2023. Available at: https://falco.org/docs/. Accessed on: 10 out. 2023.

GOOGLE. Borg, Omega, and Kubernetes. 2016. Available at: https://research.google/pubs/pub43438/. Accessed on: 10 out. 2023.

KUBERNETES. Kubernetes Documentation. 2023. Available at: https://kubernetes.io/docs. Accessed on: 10 out. 2023.

MERKEL, Dirk. Docker: Lightweight Linux Containers for Consistent Development and Deployment. Linux Journal, 2014. Available at: https://www.linuxjournal.com/content/docker-lightweight-linux-containers-consistent-development-and-deployment. Accessed on: 10 out. 2023.

MITRE. ATT&CK for Containers Matrix. 2023. Available at: https://attack.mitre.org/matrices/enterprise/containers/. Accessed on: 10 out. 2023.

OPEN CONTAINERS INITIATIVE. runc Security Advisory CVE‑2019‑5736. 2019. Available at: https://github.com/opencontainers/runc/issues/2128. Accessed on: 10 out. 2023.

OPA. Open Policy Agent Documentation. 2023. Available at: https://www.openpolicyagent.org/docs/latest/. Accessed on: 10 out. 2023.

PALO ALTO NETWORKS. TeamTNT Cloud Threat Analysis. 2021. Available at: https://unit42.paloaltonetworks.com/teamtnt-operations-cloud/. Accessed on: 10 out. 2023.

POHLACK, M.; SIEGEL, M. Linux Containers and Kernel Isolation. IEEE Security & Privacy, 2019. Available at: https://doi.org/10.1109/MSEC.2019.2924556. Accessed on: 10 out. 2023.

RAHMAN, M. et al. Security Risks in Containerized CI/CD Pipelines. IEEE Cloud Computing, 2020. Available at: https://doi.org/10.1109/MCC.2020.2995785. Accessed on: 10 out. 2023.

RED HAT. Securing Kubernetes Clusters. 2022. Available at: https://www.redhat.com/en/topics/containers/kubernetes-security. Accessed on: 10 out. 2023.

SIGSTORE. Cosign Container Signing. 2023. Available at: https://docs.sigstore.dev/cosign. Accessed on: 10 out. 2023.

SHU, Ren et al. A Study of Security Vulnerabilities on Docker Hub. Proceedings of ACM CCS, 2017. Available at: https://doi.org/10.1145/3133956.3134014. Accessed on: 10 out. 2023.

SYSDIG. Runtime Security with eBPF. 2022. Available at: https://sysdig.com/blog/ebpf-runtime-security/. Accessed on: 10 out. 2023.

VILLAMIZAR, M. et al. Infrastructure Cost Comparison of Containers and Virtual Machines. IEEE Cloud Computing, 2015. Available at: https://doi.org/10.1109/MCC.2015.51. Accessed on: 10 out. 2023.

ZHANG, Q. et al. Security Analysis of Kubernetes. IEEE Conference on Cloud Engineering, 2018. Available at: https://doi.org/10.1109/IC2E.2018.00025. Accessed on: 10 out. 2023.

NIST. Application Container Security Guide (SP 800‑190). 2017. Available at: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-190.pdf. Accessed on: 10 out. 2023.

CNCF. Cloud Native Security Whitepaper. 2022. Available at: https://github.com/cncf/tag-security. Accessed on: 10 out. 2023.

KREBS, Brian. The Rise of Cryptomining Malware in Cloud Infrastructure. 2021. Available at: https://krebsonsecurity.com. Accessed on: 10 out. 2023.

AQUA SECURITY. Cloud Native Threat Report. 2023. Available at: https://www.aquasec.com/resources/threat-reports/. Accessed on: 10 out. 2023.

MICROSOFT. Container Security in the Cloud. 2022. Available at: https://learn.microsoft.com/security/containers. Accessed on: 10 out. 2023.