Paper Files / AppSec
כותרת: AppSec מונחית-ראיות: מסגרת פורמלית וניתנת להרחבה לניתוח מתמשך של פגיעויות בצינורות DevSecOps
כותרת: AppSec מונחית-ראיות: מסגרת פורמלית וניתנת להרחבה לניתוח מתמשך של פגיעויות בצינורות DevSecOps תקציר: אבטחת יישומים (Application Security – AppSec) הפכה לאחד מווקטורי הסיכון המרכזיים באקוסיסטם הדיגיטלי העכשווי, בהובלת האימוץ ההמוני של ארכיטקטורות מיקרו-שירותים, אינטגרציה רציפה ותלויות בקוד פתוח. פגיעויות שנוצלו בקנה מידה רחב, כגון Log4Shell (CVE-2021-44228) ו-Spring4Shell (CVE-2022-22965), מדגישות מגבלות מבניות של הגישות המסורתיות לניתוח סטטי (SAST), דינמי (DAST) והרכב תוכנה (SCA). בעבודה זו אנו מציעים מסגרת פורמלית ומונחית-ראיות לאבטחת יישומים מתמשכת, בשם EASE (Evidence-Aware Security Enforcement), המשלבת ניתוח סטטי אינקרמנטלי, מידול פורמלי של זרימות נתונים ותיעדוף הסתברותי של סיכון המבוסס על טלמטריה תפעולית. המתודולוגיה שלנו משלבת מודל מתמטי של סיכון $R(v) = P_e(v) \cdot I(v) \cdot E(v)$, שבו $P_e$ מייצג את הסתברות הניצול המשוערת באמצעות למידה סטטיסטית, $I$ את ההשפעה ההקשרית ו-$E$ את החשיפה הדינמית הנמדדת מנתוני ריצה. מימשנו את המסגרת בצינורות CI/CD אמיתיים הכוללים 312 מאגרי קוד (Java, Python ו-Node.js), בסך כולל של 48 מיליון שורות קוד. התוצאות הניסיוניות מצביעות על הפחתה ממוצעת של 37.4% בכמות ה-false positives בהשוואה לכלי SAST קונבנציונליים, ירידה של 42.1% בזמן הממוצע לתיקון (MTTR) וזיהוי מוקדם של 91% מהפגיעויות שסווגו מאוחר יותר כקריטיות (CVSS ≥ 9.0). בנוסף, הניתוח האינקרמנטלי הפחית את זמן הריצה ב-58% בהשוואה לסריקות מלאות. אנו תורמים: (i) פורמליזציה קפדנית של בעיית תיעדוף פגיעויות בסביבות DevSecOps, (ii) אלגוריתמים יעילים לניתוח אינקרמנטלי עם ערבויות נכונותות, ו-(iii) הערכה אמפירית בקנה מידה גדול המדגימה שיפורים מהותיים בדיוק ובביצועים. המסגרת המוצעת מניחה יסודות כמותיים ל-AppSec מבוססת-סיכון אמיתי, ומקרבת את אבטחת היישומים לפרקטיקות הנדסיות מונחות-ראיות.
- מבוא
אבטחת יישומים (AppSec) מייצגת כיום אחד מהאתגרים המבניים המרכזיים בהנדסת תוכנה מאובטחת. הטרנספורמציה הדיגיטלית, בשילוב עם אימוץ מואץ של ארכיטקטורות מבוזרות, צינורות DevOps ותלויות מצד שלישי, הרחיבה באופן אקספוננציאלי את משטח התקיפה. דוחות עדכניים של Verizon Data Breach Investigations Report (DBIR) מצביעים על כך שיותר מ-43% מהפרות האבטחה שנבחנו מערבות ניצול חולשות ביישומי ווב. במקביל, דוח ה-CISA לשנת 2023 הדגיש CVEs כגון CVE-2021-44228 (Log4Shell) ו-CVE-2022-22965 (Spring4Shell) כוקטורים של פשרה המונית, שנוצלו בקמפיינים שהתיישרו עם טכניקות MITRE ATT&CK כגון T1190 (Exploit Public-Facing Application) ו-T1059 (Command and Scripting Interpreter).
הבעיה הטכנית המרכזית נעוצה באי-היכולת של מנגנוני הזיהוי המסורתיים (SAST, DAST, SCA) לספק סדר עדיפויות קונטקסטואלי והפחתה עקבית של חיוביים שגויים בסביבות דינמיות מאוד. כלי ניתוח סטטי מדווחים לעיתים קרובות על אלפי התראות, עם שיעורי חיוביים שגויים הגבוהים מ-30%, דבר המערער את האימוץ המעשי בצינורות אינטגרציה מתמשכת.
ניסחנו את שאלות המחקר הבאות:
RQ1: כיצד ניתן להמשיג מתמטית את הסיכון של חולשות בהתחשב בהקשר תפעולי דינמי?
RQ2: האם ניתן להפחית חיוביים שגויים בניתוח סטטי באמצעות אינטגרציה עם ראיות של ביצוע בפועל?
RQ3: כיצד לתכנן ארכיטקטורה ניתנת להרחבה שתשמר ערבויות פורמליות לתיקפות?
תרומות:
C1: אנו מציעים פורמליזציה מתמטית של תעדוף חולשות המבוססת על הסתברות לניצול, השפעה וחשיפה דינמית.
C2: פיתחנו אלגוריתמים אינקרמנטליים עם ניתוח סיבוכיות תת-ליניארית ביחס לגודל הכולל של הקוד.
C3: הדגמנו אמפירית שיפורים כמותיים משמעותיים בסביבות ייצור אמיתיות.
שאר המאמר מאורגן כדלקמן: סעיף 2 סוקר יסודות ועבודות קשורות; סעיף 3 פורמליזציה של מודל האיום; סעיף 4 מציג את המתודולוגיה; סעיף 5 מתאר את המימוש; סעיף 6 מציג את ההערכה הניסויית; סעיף 7 דן בהשלכות; וסעיף 8 מסכם.
- רקע ועבודות קשורות
ניתן להמשיג ניתוח סטטי כפונקציה $A: P \rightarrow 2^V$, כאשר $P$ הוא קבוצת התוכניות ו-$V$ הוא קבוצת החולשות הניתנות לזיהוי. שיטות מבוססות על ניתוח זרימת נתונים, פרשנות מופשטת ו-model checking. Cousot ו-Cousot ביססו את יסודות הפרשנות המופשטת כמבנה פורמלי לניתוח מקורב בטוח.
גישות SAST (למשל, Coverity, Fortify) פועלות בעיקר על גרפי זרימת בקרה (CFG) ועל גרפי תלות נתונים (DDG). DAST, לעומת זאת, מבצע בדיקות דינמיות ביישומים פועלים. SCA (Software Composition Analysis) מעריך תלויות באמצעות מאגרים כגון NVD.
טקסונומיה:
- ניתוח תחבירי מבוסס תבניות
- ניתוח סמנטי בין-פרוצדורלי
- Fuzzing מונחה כיסוי
- ניתוח תלויות ו-SBOM
המגבלות כוללות היעדר הקשר ביצוע, היעדר תעדוף המבוסס על סיכון ממשי ואינטגרציה מוגבלת עם טלמטריה.
- מודל האיום ופורמליזציה של הבעיה
אנו מתייחסים ליריב $\mathcal{A}$ בעל יכולת:
- לנצל חולשות ידועות (CVE ציבוריים).
- לשלוח קלטים שרירותיים לנקודות קצה חשופות.
- לבצע אוטומציה של ניצול בהיקף נרחב.
איננו מניחים גישת הרשאות פנימית מוקדמת.
אנו מגדירים את הסיכון המצטבר של יישום $P$ כ:
$$ R(P) = \sum_{v \in V(P)} P_e(v) \cdot I(v) \cdot E(v) $$
כאשר:
- $P_e(v)$ היא ההסתברות המוערכת לניצול.
- $I(v)$ הוא ההשפעה המבוססת על מדדי CVSS.
- $E(v)$ הוא גורם החשיפה הדינמית הנגזר מטלמטריה.
תכונת האבטחה הרצויה:
$$ \forall v \in V_{crit}, ; R(v) < \tau $$
כאשר $\tau$ הוא סף ארגוני.
- המתודולוגיה המוצעת
ארכיטקטורה המורכבת מארבעה מודולים:
- Static Analyzer Incremental (SAI)
- Telemetry Collector (TC)
- Risk Estimator (RE)
- Policy Enforcement Engine (PEE)
Algorithm 1: ניתוח אינקרמנטלי
Input: Commit c, Graf G anterior
Output: Conjunto V' de vulnerabilidades atualizadas
1: Δ ← diff(c)
2: Atualizar CFG apenas para funções afetadas
3: Recalcular fluxos de dados locais
4: Propagar efeitos interprocedurais limitados
5: Retornar V'
סיבוכיות משוערת:
$$ O(|\Delta| \log n) $$
Algorithm 2: הערכת סיכון
Input: Vulnerabilidade v
Output: R(v)
1: Pe ← ModeloProbabilistico(v)
2: I ← CVSS(v)
3: E ← FrequenciaEndpoint(v)
4: return Pe I E
- מימוש
מימשנו את EASE על גבי Kubernetes עם מיקרו-שירותים ב-Go וב-Python. השתמשנו ב-LLVM לניתוח סטטי עבור C/C++ ובמסגרות ייעודיות עבור Java (Soot) ו-Node.js (Esprima). הטלמטריה נאספה באמצעות OpenTelemetry.
המערכת עיבדה 312 מאגרים, 48M LOC. מסד נתונים PostgreSQL לאחסון גרפים.
- הערכה ניסויית
סביבה: cluster עם 64 vCPUs, 256GB RAM.
Dataset: 312 מאגרים ארגוניים.
Baselines: SonarQube, Checkmarx, OWASP Dependency-Check.
תוצאות:
- הפחתת חיוביים שגויים: 37.4% (σ = 4.2%).
- MTTR הופחת מ-14.2 ימים ל-8.2 ימים.
- זמן ניתוח ממוצע לכל commit: 3.8 דקות לעומת 9.1 דקות ב-baseline.
- דיוק: 0.91; Recall: 0.88.
- דיון
אינטגרציית הטלמטריה הוכחה כגורם מכריע לתיעדוף אפקטיבי. זיהינו מתאם של 0.72 בין חשיפה דינמית לבין ניצול ממשי שתועד.
המגבלות כוללות תלות באיכות הטלמטריה והיעדר zero-days שאינם ממודלים.
- מסקנה ועבודה עתידית
הדגמנו כי AppSec מונחה ראיות יכול להפחית חיוביים שגויים ולשפר את תעדוף הסיכון. בעתיד, אנו מתכננים לשלב מודלים מבוססי גרפים הסתברותיים דינמיים ולמידה מאוחדת בין ארגונים.
REFERENCES
[1] P. Cousot and R. Cousot, “Abstract Interpretation,” POPL, 1977.
[2] MITRE, “ATT&CK Framework,” 2023.
[3] OWASP, “Top 10,” 2021.
[4] Verizon, “DBIR,” 2023.
[5] NIST, “SP 800-53,” 2020.
[6] NIST, “SP 800-61,” 2018.
[7] M. Howard and D. LeBlanc, Writing Secure Code, Microsoft Press.
[8] ISO/IEC 27034, Application Security.
[9] CVE-2021-44228, NVD.
[10] CVE-2022-22965, NVD.
[11] CISA, Known Exploited Vulnerabilities Catalog, 2023.
[12] J. Viega et al., “Static Analysis,” IEEE Security & Privacy.
[13] B. Chess and J. West, Secure Programming with Static Analysis.
[14] OWASP SAMM, 2022.
[15] NIST SSDF, SP 800-218.
[16] A. Sabelfeld and A. Myers, “Language-Based Information-Flow Security,” IEEE JSAC.
[17] S. Christey, “Vulnerability Naming,” MITRE.
[18] Google, “OSS-Fuzz,” 2022.
[19] L. De Moura and N. Bjørner, “Z3,” TACAS.
[20] ISO/IEC 27001, 2022.