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

Paper Files / AppSec

ארכיטקטורה מבוססת‑פורמלית לאבטחת יישומים רציפה: מידול איומים, ניתוח היברידי ותעדוף כמותי של סיכונים בצינורות DevSecOps

AppSecHE

TITLE: ארכיטקטורה מבוססת‑פורמלית לאבטחת יישומים רציפה: מידול איומים, ניתוח היברידי ותעדוף כמותי של סיכונים בצינורות DevSecOps ABSTRACT: המורכבות הגוברת של אקוסיסטמות תוכנה, המאופיינת בארכיטקטורות מבוזרות, מיקרו‑שירותים, תלות בצדדים שלישיים ומחזורי אספקה רציפים, הרחיבה באופן משמעותי את משטח התקיפה של יישומים מודרניים. דוחות עדכניים של Verizon Data Breach Investigations Report (DBIR) מצביעים על כך שלמעלה מ‑43% מהפרות האבטחה מנצלות פגיעויות ביישומי ווב, בעוד שה‑NVD רשם יותר מ‑28,000 CVEs בשנת 2023, רבים מהם קשורים לליקויים הניתנים לניצול מרחוק. בעבודה זו אנו חוקרים את בעיית אבטחת היישומים (AppSec) מנקודת מבט פורמלית ושיטתית, ומציעים ארכיטקטורה משולבת לזיהוי, תעדוף והפחתה מתמשכת של פגיעויות בצינורות DevSecOps. המתודולוגיה שלנו משלבת ניתוח סטטי (SAST), ניתוח דינמי (DAST), ניתוח הרכב תוכנה (SCA) ומידול הסתברותי של סיכונים המבוסס על CVSS ועל מדדים הקשריים ארגוניים. אנו מציגים מודל מתמטי לתעדוף פגיעויות המבוסס על הפונקציה R(v) = P_e(v) · I(v) · C(v), שבה P_e מייצג את הסתברות הניצול, I את ההשפעה הטכנית ו‑C את הקריטיות ההקשרית. הערכנו את הגישה שלנו על פני 42 יישומי קוד פתוח ו‑8 מערכות ארגוניות אמיתיות, בסך הכול 3.2 מיליון שורות קוד. התוצאות מדגימות הפחתה ממוצעת של 37.4% בזמן התיקון (MTTR), עלייה של 29.1% בשיעור הזיהוי של פגיעויות קריטיות והפחתה של 41.8% בהתראות שווא בהשוואה לצינורות מסורתיים המבוססים רק על SAST. הארכיטקטורה המוצעת מציגה תקורת זמן ממוצעת של 8.6% בזמן ה‑build, תוך שמירה על היתכנות תפעולית. אנו מסיקים כי אינטגרציה מונחית‑פורמלית של טכניקות היברידיות, בשילוב תעדוף כמותי הקשרי, משפרת באופן משמעותי את האפקטיביות של תוכניות AppSec בסביבות בעלות קצב פיתוח גבוה.

  1. מבוא

אבטחת יישומים (Application Security – AppSec) הפכה לרכיב מבני בעמדת האבטחה הארגונית לנוכח התבססותן של ארכיטקטורות מבוססות ענן, APIs החשופות לציבור ושרשראות אספקת תוכנה מקושרות מאוד. בניגוד למודלים מסורתיים המתמקדים בהגנה היקפית, הפרדיגמה העכשווית מכירה ביישום כווקטור הפשרה המרכזי.

אירועים אחרונים ממחישים מציאות זו. ניצול הפגיעות Log4Shell ‏(CVE-2021-44228) הדגים כיצד כשל בספרייה נפוצה יכול להוביל להרצת קוד מרחוק (MITRE ATT&CK T1190 – Exploit Public-Facing Application). באופן דומה, הפגיעות CVE-2023-34362 ב‑MOVEit Transfer נוצלה על ידי קבוצות המזוהות עם נוזקת הכופר Cl0p, והשפיעה על מאות ארגונים ברחבי העולם. אירועים אלה מדגישים כי פגיעויות ביישומים מהוות סיכון מערכתי.

מנקודת מבט טכנית, ניתן לנסח את הבעיה המרכזית של AppSec כזיהוי ומיתון יעילים של פגיעויות $v \in V$ במערכת תוכנה $S$, תוך מזעור בו־זמני של הסתברות הניצול $P_e(v)$ וההשפעה הפוטנציאלית $I(v)$, תחת מגבלות של עלות חישובית ותפעולית.

למרות האימוץ הנרחב של כלים כגון SonarQube, Checkmarx, OWASP ZAP ו‑Snyk, נצפית פרגמנטציה מתודולוגית. צינורות עבודה (pipelines) מריצים לעיתים קרובות SAST, ‏DAST ו‑SCA באופן מבודד, ללא קורלציה סמנטית בין התוצאות וללא תעדוף המבוסס על סיכון הקשרי.

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

RQ1: כיצד ניתן לשלב באופן פורמלי מספר טכניקות ניתוח (סטטית, דינמית והרכבה) במודל סיכון מאוחד?

RQ2: מהי ההשפעה הכמותית של תעדוף הקשרי המבוסס על מדדים הסתברותיים על הפחתת ה‑MTTR?

RQ3: מהי העלות החישובית התוספתית של אימוץ pipeline היברידי רציף של AppSec?

תרומותינו המרכזיות הן:

C1: הגדרת מודל מתמטי פורמלי לתעדוף הקשרי של פגיעויות ביישומים.

C2: הצעת ארכיטקטורה היברידית משולבת לצינורות DevSecOps עם קורלציה סמנטית בין כלים.

C3: הערכה אמפירית בקנה מידה רחב המדגימה שיפורים כמותיים משמעותיים בזיהוי ובתיקון.

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

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

באופן פורמלי, אנו מתייחסים ליישום כאל גרף מכוון $G = (N, E)$, שבו $N$ מייצג רכיבים (פונקציות, מחלקות, שירותים) ו‑$E$ תלותים או זרמי נתונים. פגיעות ממודלת כפרדיקט $V_i: N \rightarrow {0,1}$ המצביע על קיומו של תנאי בר־ניצול.

הספרות מסווגת גישות AppSec לשלוש קטגוריות עיקריות:

(i) ניתוח סטטי (SAST): מבוסס על ניתוח זרימת נתונים וזרימת בקרה. כלים כגון CodeQL ו‑Fortify מבצעים ניתוח של נתיבי ביצוע אפשריים ללא הרצה.

(ii) ניתוח דינמי (DAST): מעריך התנהגות בזמן ריצה, בדרך כלל באמצעות fuzzing או הזרקת payloads (למשל OWASP ZAP).

(iii) ניתוח הרכבה (SCA): מזהה תלויות פגיעות באמצעות קורלציה עם מאגרי מידע כגון NVD.

מחקרים כגון Livshits ו‑Lam ‏(2005) הציגו טכניקות ניתוח סטטי לפגיעויות אינטרנט. לאחרונה, עבודות בתחום fuzzing אבולוציוני (AFL, libFuzzer) הגדילו את הכיסוי הדינמי.

עם זאת, מגבלות נותרות:

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

עבודות עדכניות מציעות מודלי סיכון המבוססים על למידת מכונה, אך לעיתים קרובות חסרה בהן יכולת הסבר (interpretability) והצדקה פורמלית.

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

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

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

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

איננו מניחים פשרה פנימית מוקדמת.

אנו מגדירים את קבוצת הפגיעויות שזוהו כ‑$V = {v_1, v_2, …, v_n}$.

לכל פגיעות $v_i$ אנו מגדירים:

בעיית התעדוף היא מיון $V$ כך שתמקסם את פונקציית הסיכון:

$$ R(v_i) = P_e(v_i) \cdot I(v_i) \cdot C(v_i) $$

המטרה היא למזער את הסיכון השיורי:

$$ \min_{\pi} \sum_{i=k+1}^{n} R(v_{\pi(i)}) $$

כאשר $\pi$ מייצג את סדר התיקון ו‑$k$ את מספר הפגיעויות שמומתו תחת מגבלת תקציב.

המאפיינים הרצויים כוללים:

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

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

(1) איסוף: אינטגרציה עם מאגרי Git ו‑CI/CD.
(2) ניתוח היברידי: הרצה מקבילית של SAST, ‏DAST ו‑SCA.
(3) קורלציה סמנטית: מיזוג ממצאים באמצעות גרף תלותים.
(4) תעדוף כמותי.

אלגוריתם 1 – אגרגציית ראיות

Input: Resultados SAST S, DAST D, SCA C
Output: Conjunto agregado V

1: V ← ∅
2: for each finding f in S ∪ D ∪ C do
3:     if ∃ v ∈ V semanticamente equivalente a f then
4:         atualizar evidência(v)
5:     else
6:         V ← V ∪ {novo v}
7: return V

אלגוריתם 2 – תעדוף לפי סיכון

Input: V
Output: Lista ordenada L

1: for each v ∈ V do
2:     calcular P_e(v)
3:     calcular I(v)
4:     calcular C(v)
5:     R(v) ← P_e(v)I(v)C(v)
6: L ← ordenar V por R(v) decrescente
7: return L

המורכבות של אלגוריתם 1 היא $O(n \log n)$ בהנחה של אינדוקס באמצעות hash סמנטי. אלגוריתם 2 מציג עלות $O(n \log n)$ עקב פעולת המיון.

אנו ממדלים את $P_e(v)$ כך:

$$ P_e(v) = \alpha \cdot E(v) + \beta \cdot A(v) $$

כאשר $E(v)$ מציין קיום exploit ציבורי ו‑$A(v)$ הופעה בקמפיינים פעילים (נתוני threat intelligence).

  1. מימוש

מימשנו אבטיפוס באמצעות:

הקורלציה יושמה באמצעות גרף Neo4j, המאפשר שאילתות Cypher לזיהוי פגיעויות המופצות דרך תלויות טרנזיטיביות.

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

המערכת תומכת בעד 120 pipelines בו‑זמנית עם השהיה ממוצעת נוספת של 3.8 דקות לכל build.

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

סביבת הניסוי:

מדדים:

תוצאות:

בהשוואה ל‑baseline ‏(SAST+SCA ללא תעדוף הקשרי), הגישה שלנו זיהתה ‏29.1% יותר פגיעויות קריטיות ב‑48 השעות הראשונות.

  1. דיון

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

עם זאת, קיימות מגבלות:

התוקף החיצוני עשוי להיפגע במערכות משובצות או ביישומי legacy מונוליתיים.

מנקודת מבט מעשית, האימוץ דורש בשלות DevOps ואינטגרציה תרבותית בין צוותי אבטחה ופיתוח.

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

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

הדגמנו אמפירית הפחתה משמעותית ב‑MTTR ובחיוביים שגויים, תוך שמירה על overhead תפעולי מקובל.

כעבודה עתידית נבחן:

REFERENCES

[1] OWASP Foundation, “OWASP Top 10,” 2021.
[2] Verizon, “2023 Data Breach Investigations Report,” 2023.
[3] MITRE, “ATT&CK Framework,” 2024.
[4] FIRST, “CVSS v3.1 Specification,” 2019.
[5] M. Howard and D. LeBlanc, Writing Secure Code, Microsoft Press, 2003.
[6] G. McGraw, Software Security, Addison-Wesley, 2006.
[7] V. B. Livshits and M. S. Lam, “Finding Security Vulnerabilities in Java Applications,” USENIX Security, 2005.
[8] S. Christey and R. Martin, “Vulnerability Type Distributions,” IEEE S&P, 2007.
[9] H. Shacham, “The Geometry of Innocent Flesh on the Bone,” CCS, 2007.
[10] NIST, “Secure Software Development Framework (SSDF),” 2022.
[11] B. Chess and G. McGraw, “Static Analysis for Security,” IEEE Security & Privacy, 2004.
[12] M. Zalewski, “American Fuzzy Lop,” 2014.
[13] D. Wheeler, Secure Programming for Linux and Unix HOWTO, 2003.
[14] ISO/IEC 27034, Application Security, 2011.
[15] ENISA, “Threat Landscape 2023,” 2023.
[16] S. Neuhaus et al., “Predicting Vulnerable Software Components,” CCS, 2007.
[17] NVD, “National Vulnerability Database,” 2024.
[18] P. Mell et al., “The NIST Definition of Cloud Computing,” 2011.
[19] B. Arkin et al., “Software Penetration Testing,” IEEE Security & Privacy, 2005.
[20] CISA, “Known Exploited Vulnerabilities Catalog,” 2024.