Paper Files / AppSec
AppSec מונחית־ראיות: מסגרת פורמלית וניתנת להרחבה לניתוח מתמשך של פגיעויות בצינורות DevSecOps
TITLE: AppSec מונחית־ראיות: מסגרת פורמלית וניתנת להרחבה לניתוח מתמשך של פגיעויות בצינורות DevSecOps ABSTRACT: אבטחת יישומים (Application Security – AppSec) הפכה לאחד מווקטורי הסיכון המרכזיים באקוסיסטם הדיגיטלי העכשווי, מונעת על ידי אימוץ נרחב של ארכיטקטורות מיקרו־שירותים, אינטגרציה רציפה ותלויות בקוד פתוח. פגיעויות שנוצלו בקנה מידה רחב, כגון Log4Shell (CVE-2021-44228) ו‑Spring4Shell (CVE-2022-22965), מדגישות מגבלות מבניות של הגישות המסורתיות לניתוח סטטי (SAST), דינמי (DAST) והרכב תוכנה (SCA). בעבודה זו אנו מציעים מסגרת פורמלית ומונחית־ראיות עבור AppSec מתמשך, בשם EASE (Evidence-Aware Security Enforcement), המשלבת ניתוח סטטי אינקרמנטלי, מידול פורמלי של זרימות נתונים ותעדוף הסתברותי של סיכונים המבוסס על טלמטריה תפעולית. המתודולוגיה שלנו משלבת מודל מתמטי של סיכון R(v) = P_e(v) · I(v) · E(v), שבו P_e מייצג הסתברות לניצול המוערכת באמצעות למידה סטטיסטית, I את ההשפעה ההקשרית, ו‑E את החשיפה הדינמית הנמדדת באמצעות נתוני הרצה. יישמנו את המסגרת בצינורות CI/CD אמיתיים הכוללים 312 מאגרים (Java, Python ו‑Node.js), בסך כולל של 48 מיליון שורות קוד. התוצאות הניסיוניות מצביעות על הפחתה ממוצעת של 37.4% בחיוביים שגויים בהשוואה לכלי 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, Grafo 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 שימש לאחסון גרפים.
- הערכה ניסויית
סביבה: אשכול עם 64 vCPUs ו‑256GB RAM.
מערך נתונים: 312 מאגרי קוד ארגוניים.
Baselines: SonarQube, Checkmarx, OWASP Dependency-Check.
תוצאות:
- הפחתת חיוביים שגויים: 37.4% (σ = 4.2%).
- MTTR הופחת מ‑14.2 ימים ל‑8.2 ימים.
- זמן ניתוח ממוצע לכל commit: 3.8 דקות לעומת 9.1 דקות בבסיס ההשוואה.
- דיוק: 0.91; Recall: 0.88.
- דיון
האינטגרציה של טלמטריה הוכחה כגורם מכריע לתעדוף יעיל. נצפתה קורלציה של 0.72 בין חשיפה דינמית לבין ניצול ממשי שנרשם.
המגבלות כוללות תלות באיכות הטלמטריה והיעדר פגיעויות zero‑day שאינן ממודללות.
- מסקנות ועבודה עתידית
הראינו כי 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.