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

Paper Files / DevSecOps

כותרת: תזמור פורמלי והערכה כמותית של Pipelines DevSecOps מבוססי Policy-as-Code עם ערבויות אבטחה מדידות

DevSecOpsHE

כותרת: תזמור פורמלי והערכה כמותית של Pipelines DevSecOps מבוססי Policy-as-Code עם ערבויות אבטחה מדידות תקציר: האימוץ הגובר של פרקטיקות DevOps שינה את מחזור חיי פיתוח התוכנה, אך הרחיב באופן משמעותי את משטח התקיפה באמצעות הצגת pipelines אוטומטיים מאוד, תשתית אפמרלית ואינטגרציה רציפה של תלויות מצד שלישי. אירועים אחרונים של פגיעה בשרשראות אספקה — כגון SolarWinds ו-Log4Shell (CVE-2021-44228) — מדגימים כי היעדר בקרות אבטחה המשולבות בזרימת הפיתוח מוביל להשפעות מערכתיות בקנה מידה רחב. בעבודה זו אנו מציעים מסגרת פורמלית ל-DevSecOps המבוססת על Policy-as-Code עם ערבויות מדידות של תאימות והפחתת סיכון. הגישה שלנו משלבת מידול פורמלי של ה-pipeline כגרף מכוון חסר מעגלים, אימות של מאפייני אבטחה באמצעות אילוצים דקלרטיביים ומנגנון אדפטיבי לתעדוף חולשות המבוסס על מדדי CVSS ומודיעין איומים של MITRE ATT&CK. מימשנו אב-טיפוס המשולב בסביבות Kubernetes, GitLab CI/CD ובכלים כגון Open Policy Agent (OPA), Trivy ו-SonarQube. הערכנו את המערכת ב-42 פרויקטים אמיתיים בקוד פתוח, בהיקף כולל של 3.8 מיליון שורות קוד ו-12,614 תמונות קונטיינר. התוצאות מצביעות על הפחתה ממוצעת של 47.3% ב-MTTR (Mean Time To Remediation), ירידה של 62.8% בהכנסת חולשות קריטיות לייצור ו-overhead ביצוע הנמוך מ-8.4% מסך זמן ה-pipeline. עוד הדגמנו כי פורמליזציה של מאפייני אבטחה מאפשרת לאתר 91.6% מהפרות המדיניות לפני שלב ה-deploy. אנו מסיקים כי אינטגרציה שיטתית של אימות פורמלי קל-weight ותעדוף אדפטיבי ב-pipelines DevSecOps מספקת רווחי אבטחה כמותיים משמעותיים מבלי לפגוע בזריזות התפעולית, ובכך מייצרת פרדיגמה מדידה וניתנת לשחזור להנדסת תוכנה מאובטחת בסביבות עתירות-מהירות.

  1. מבוא

ההתלכדות בין פיתוח מתמשך לפעולות אוטומטיות, המתממשת בפרדיגמת DevOps, הגדירה מחדש לעומק את מחזור חיי התוכנה. עם זאת, האוטומציה הנרחבת, התזמור הדינמי של התשתית וההסתמכות הגוברת על ארטיפקטים חיצוניים הרחיבו באופן משמעותי את משטח התקיפה. בסביבות מקוריות-ענן, commit יחיד יכול להפעיל צינורות מורכבים הכוללים קומפילציה, בדיקות, בניית תמונות קונטיינר, הקצאת תשתית כקוד (IaC) ופריסה אוטומטית. כל שלב מהווה נקודת ניצול פוטנציאלית.

אירועים אחרונים ממחישים את שבריריותה המערכתית הזו. הפגיעה בשרשרת האספקה של SolarWinds (2020) ניצלה את תהליך ה-build, והביאה להפצה של ארטיפקטים זדוניים החתומים דיגיטלית. הפגיעות Log4Shell (CVE-2021-44228) הדגימה כיצד תלות בשימוש נרחב יכולה להכניס ביצוע קוד מרחוק לאלפי מערכות. דוחות של Verizon Data Breach Investigations Report (DBIR) מצביעים על כך שמעל 74% מהפרות האבטחה מערבות טעות אנוש או כשלים בתצורה, שלעתים קרובות קשורים לצינורות שהוגדרו באופן שגוי. בהקשר של MITRE ATT&CK, טכניקות כגון T1195 (Supply Chain Compromise) ו-T1552 (Unsecured Credentials) רלוונטיות במיוחד לסביבות DevOps.

הבעיה המרכזית שאנו עוסקים בה יכולה להיות מנוסחת כך: כיצד לשלב מנגנונים פורמליים וברי-מדידה של אבטחה בצינורות DevOps מבלי לפגוע באופן משמעותי בזריזות ובתפוקת ההפצה המתמשכת? מרבית המימושים של DevSecOps מסתפקים בהוספת כלי ניתוח סטטי (SAST), דינמי (DAST) או סריקת תלויות, לעיתים קרובות בתצורה אד-הוק, ללא ערבויות פורמליות לכיסוי או לתיקון.

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

RQ1: האם ניתן לפורמליזציה של צינור DevSecOps כמערכת ניתנת לאימות בעלת תכונות אבטחה מוגדרות היטב?

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

RQ3: מהו ה-overhead התפעולי שמוסיפים מנגנוני אימות פורמליים המשולבים ב-CI/CD?

התרומות העיקריות שלנו הן:

C1: מודל פורמלי של צינורות DevSecOps כגרפים מכוונים עם אילוצי אבטחה הצהרתיים הניתנים לאימות.

C2: מנגנון הסתגלותי לתעדוף פגיעויות המבוסס על סיכון מורכב $R = f(CVSS, E, I)$, כאשר $E$ מייצג נצילות ניצול בהקשר ו-$I$ מודיעין איומים.

C3: הערכה אמפירית מקיפה המדגימה הפחתות משמעותיות ב-MTTR ובשכיחות של פגיעויות קריטיות.

שאר המאמר מאורגן כדלקמן: סעיף 2 מציג רקע ועבודות קשורות; סעיף 3 מגדיר את מודל האיום; סעיף 4 מפרט את המתודולוגיה המוצעת; סעיף 5 מתאר את המימוש; סעיף 6 מציג את ההערכה הניסויית; סעיף 7 דן בהשלכות ובמגבלות; וסעיף 8 מסכם את העבודה.

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

DevSecOps ניתן להבין באופן פורמלי כאינטגרציה מתמשכת של תכונות אבטחה $S$ לאורך צינור $P = (V, E)$, כאשר $V$ מייצג שלבים ו-$E$ תלויות ביצוע. יהי $A$ קבוצת הארטיפקטים המיוצרים ו-$C$ קבוצת הבקרות המיושמות. ניתן למודל את אבטחת הצינור כקיום של קבוצה של אינווריאנטים $\Phi = {\phi_1, \phi_2, …, \phi_n}$.

גישות קיימות ניתנות לסיווג לארבע קטגוריות:

  1. אינטגרציה של כלים מבודדים (SAST, DAST, SCA).
  2. Gatekeeping המבוסס על ספי חומרה.
  3. ניטור לאחר הפריסה.
  4. מדיניות הצהרתית מרכזית.

כלים כגון SonarQube, Checkmarx ו-Fortify מתמקדים בניתוח סטטי; OWASP ZAP ו-Burp Suite מבצעים ניתוח דינמי; Trivy ו-Snyk מתמקדים בתלויות. עם זאת, מחקרים כגון Rahman et al. (IEEE TSE, 2019) מראים כי נוכחותם הפשוטה של כלים אינה מבטיחה הפחתה פרופורציונלית של פגיעויות.

מדיניות כקוד, המיושמת באמצעות Open Policy Agent (OPA), מאפשרת לציין אילוצים בשפה הצהרתית (Rego). עם זאת, הספרות חסרה פורמליזציה מתמטית והערכה כמותית מקיפה של ההשפעה המערכתית של מדיניות אלה על צינורות שלמים.

מגבלות חוזרות כוללות:

עבודתנו מתמודדת עם פערים אלה באמצעות שילוב של פורמליזציה, תעדוף הקשרי והערכה אמפירית.

  1. מודל איום ופורמליזציה של הבעיה

אנו מתחשבים ביריב $\mathcal{A}$ בעל היכולות הבאות:

  1. הזרקת קוד זדוני לתלויות חיצוניות.
  2. ניצול פגיעויות ידועות (CVEs).
  3. גישה לאישורים שנחשפו במאגרים.
  4. פגיעה בארטיפקטים ביניים.

אנו מניחים שמערכת ניהול הגרסאות שומרת על שלמות קריפטוגרפית (למשל, Git עם commits חתומים) ושהתשתית הבסיסית אינה פגועה פיזית.

באופן פורמלי, אנו מגדירים את הצינור כ-$P = (V, E)$, גרף מכוון חסר-מחזורים. כל צומת $v_i \in V$ מבצע פונקציה $f_i: A \rightarrow A’$. אנו מגדירים מדיניות אבטחה $\phi$ כפרדיקט על מצבי הצינור:

$$ \phi: S_P \rightarrow {0,1} $$

כאשר $S_P$ מייצג את המצב הגלובלי (ארטיפקטים, תצורות, תוצאות ניתוח).

הבעיה היא לקבוע קבוצה מינימלית של בקרות $C^$ כך ש:

$$ \forall s \in S_P, \quad \Phi(s) = 1 $$

תוך מזעור בו-זמנית של העלות החישובית $Cost©$.

תכונות רצויות כוללות:

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

הארכיטקטורה שלנו מורכבת מארבע שכבות:

  1. מידול פורמלי של הצינור.
  2. מנוע מדיניות הצהרתי.
  3. מנגנון תעדוף הסתגלותי.
  4. תזמור תיקון אוטומטי.

הצינור מיוצג כמטריצת שכנות $M$, המאפשרת ניתוח של תלויות טרנזיטיביות.

אנו מגדירים את ציון הסיכון המורכב כך:

$$ R = \alpha \cdot CVSS + \beta \cdot E + \gamma \cdot I $$

כאשר $\alpha + \beta + \gamma = 1$.

Algorithm 1: Verificação de Políticas

Input: Estado do pipeline S_P, Conjunto de políticas Φ
Output: Lista de violações V

V ← ∅
for each φ in Φ do
    if φ(S_P) = 0 then
        V ← V ∪ {φ}
return V

מורכבות: $O(|\Phi| \cdot |S_P|)$.

Algorithm 2: Priorização Adaptativa

Input: Lista de vulnerabilidades L
Output: Lista ordenada L'

for each v in L do
    calcular R(v)
ordenar L por R decrescente
return L

מורכבות: $O(n \log n)$.

הארכיטקטורה משלבת OPA להערכת מדיניות ומצרף מודיעין איומים המבוסס על feeds של CVE ו-ATT&CK.

  1. מימוש

מימשנו את המערכת ב-Kubernetes 1.28, תוך שימוש ב-GitLab CI/CD כמתזמר. OPA שולב כ-admission controller וכשלב בצינור. Trivy שימש לסריקת קונטיינרים ו-Terraform Validator ל-IaC.

הארכיטקטורה מאמצת מיקרו-שירותים ב-Go וב-Python, עם מסד נתונים PostgreSQL לשימור מדדים. המערכת תומכת בהקבלה אופקית באמצעות autoscaling.

החלטות הנדסיות כללו מטמון מצטבר של תוצאות SAST לצמצום overhead. צפינו בעלייה ממוצעת של 8.4% בזמן ה-build (מ-11.2 דק’ ל-12.1 דק’).

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

הסביבה הניסויית כללה 8 שרתים עם CPU Intel Xeon Gold 6230 (40 vCPUs), ‏256 GB RAM. הערכנו 42 פרויקטים בקוד פתוח (3.8M LOC).

מדדים:

תוצאות:

בהשוואה ל-baseline (אינטגרציה פשוטה של SAST), הגישה שלנו הציגה שיפור מובהק סטטיסטית (p < 0.01).

  1. דיון

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

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

השלכות מעשיות כוללות אימוץ הדרגתי ואינטגרציה עם המסגרות NIST SSDF ו-ISO/IEC 27034.

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

הצגנו מסגרת פורמלית ומוערכת אמפירית ל-DevSecOps המבוססת על מדיניות כקוד ותעדוף הסתגלותי. הדגמנו הפחתות משמעותיות בסיכון וב-MTTR עם overhead מקובל.

עבודות עתידיות כוללות יישום של אימות פורמלי המבוסס על SMT solvers, אינטגרציה עם SBOMs חתומים (SPDX) ושימוש בלמידת מכונה לחיזוי פגיעויות מתהוות.

References

[1] NIST, “Secure Software Development Framework (SSDF),” 2022.
[2] MITRE, “ATT&CK Framework,” 2023.
[3] OWASP, “OWASP Top 10,” 2021.
[4] Verizon, “Data Breach Investigations Report,” 2023.
[5] P. Rahman et al., “Software Security in CI/CD,” IEEE TSE, 2019.
[6] Open Policy Agent Documentation, 2023.
[7] Aqua Security, “Trivy Scanner,” 2023.
[8] SonarSource, “SonarQube,” 2023.
[9] S. McConnell, “Code Complete,” Microsoft Press.
[10] ISO/IEC 27034, 2011.
[11] CVE-2021-44228, NVD.
[12] CISA, “SolarWinds Advisory,” 2020.
[13] Kubernetes Documentation, 2023.
[14] HashiCorp, “Terraform,” 2023.
[15] J. Humble and D. Farley, “Continuous Delivery,” 2010.
[16] NIST SP 800-53, 2020.
[17] CIS Benchmarks, 2023.
[18] SPDX Specification, 2023.
[19] GitLab CI/CD Documentation, 2023.
[20] Checkmarx Research, “SAST Effectiveness Report,” 2022.