Paper Files / AppSec
כותרת: ארכיטקטורה כמותית של אבטחת יישומים המבוססת על מידול פורמלי של איומים, אינטגרציה של SAST/DAST/SCA וטלמטריית runtime בסביבות DevSecOps
כותרת: ארכיטקטורה כמותית של אבטחת יישומים המבוססת על מידול פורמלי של איומים, אינטגרציה של SAST/DAST/SCA וטלמטריית runtime בסביבות DevSecOps תקציר: התלות הגוברת ביישומי web, ב-APIs ובארכיטקטורות מבוססות microservices הרחיבה באופן משמעותי את משטח התקיפה של מערכות מודרניות. דוחות תקריות עדכניים מצביעים על כך שניצול של יישומים החשופים לאינטרנט נותר בין וקטורי החדירה הנפוצים ביותר, ולעיתים קרובות הוא מנצל חולשות ידועות בספריות, כשלים באימות קלט או תצורות לקויות. אף שכלי אבטחת יישומים, כגון ניתוח סטטי (SAST), ניתוח דינמי (DAST) וניתוח הרכב תוכנה (SCA), נמצאים בשימוש נרחב ב-pipelines של DevSecOps, מנגנונים אלה פועלים בדרך כלל באופן מפוצל וללא מסגרת כמותית המאפשרת לאמוד את הסיכון השיורי של המערכת. עבודה זו מציעה ארכיטקטורת Application Security משולבת המבוססת על מידול פורמלי של איומים, על צבירת תוצאות ממספר מקורות ניתוח ועל שילוב טלמטריית ביצוע בזמן אמת. אנו מנסחים פורמלית את בעיית תעדוף החולשות כתהליך של מזעור סיכון שיורי משוקלל, שבו כל חולשה מוערכת על סמך מדדי הסתברות לניצול, השפעה פוטנציאלית והקשר תפעולי. הארכיטקטורה המוצעת משלבת כלי ניתוח סטטי, דינמי ותלויות עם מנגנוני observability של אבטחה, כולל זיהוי התנהגותי ב-runtime ואיסוף רציף של אירועים. הערכנו את הגישה ניסיונית בסביבה המורכבת מיישומים פגיעים במתכוון ומ-microservices אמיתיים הפועלים בתשתית containerized. התוצאות מצביעות על שיפור משמעותי ביכולת לזהות חולשות שניתן לנצל בפועל, עם עלייה בממוצע ה-recall ל-91.3% והפחתה של 63.4% בזמן הממוצע לזיהוי (MTTD) בהשוואה לגישות מבודדות. התקורה החישובית שנצפתה נותרה נמוכה מ-20%, ותואמת לדרישות התפעוליות של pipelines מודרניים של CI/CD. בנוסף, אנו דנים בהשלכות עבור תוכניות AppSec ארגוניות, ומדגישים את חשיבות האינטגרציה בין ניתוח קוד, ניטור תפעולי ומודיעין איומים. הארכיטקטורה המוצעת מדגימה כי השילוב בין מידול פורמלי ל-telemetry runtime מספק בסיס מוצק לתעדוף חולשות בהקשר הנכון ולהפחתה אפקטיבית של הסיכון השיורי במערכות תוכנה עכשוויות.
- מבוא
משטח התקיפה העכשווי מורכב בעיקרו מיישומי ווב, ממשקי REST ושירותים מבוזרים הפועלים בסביבות ענן ותשתיות מבוססות קונטיינרים. מחקרים אמפיריים שונים מדגימים כי ניצול של יישומים החשופים לאינטרנט נותר בין וקטורי החדירה השכיחים ביותר באירועי אבטחה (VERIZON, 2023). בהקשר של מסגרת MITRE ATT&CK, טכניקות כגון T1190 (Exploit Public-Facing Application) ו-T1505 (Server-Side Component) מופיעות באופן עקבי בקמפיינים של כופרה, ריגול דיגיטלי ופגיעה בשרשראות אספקה (MITRE, 2024).
אירועים המתועדים בהרחבה ממחישים את ההשפעה המערכתית של חולשות ביישומים. דוגמה משמעותית הייתה החולשה Log4Shell (CVE-2021-44228), שאפשרה הרצת קוד מרחוק באמצעות הזרקת JNDI בספריית Log4j הנפוצה (NIST, 2021). מקרה סמלי נוסף כלל את החולשה CVE-2017-5638 ב-Apache Struts, שנוצלה באירוע שחשף נתונים אישיים של כ-147 מיליון פרטים במקרה Equifax (U.S. HOUSE OF REPRESENTATIVES, 2018).
למרות האימוץ הנרחב של כלי אבטחה, תוכניות Application Security פועלות לעיתים קרובות באופן מקוטע. כלי ניתוח סטטי של קוד (SAST) מזהים דפוסים העלולים להיות לא בטוחים בקוד המקור; כלי ניתוח דינמי (DAST) בודקים יישומים בזמן ריצה; ופתרונות Software Composition Analysis (SCA) מזהים תלויות פגיעות. עם זאת, מנגנונים אלה בדרך כלל מפיקים תוצאות מבודדות וחסרה להם מסגרת כמותית היכולה לשלב ראיות הטרוגניות ולהעריך את הסיכון השיורי של המערכת.
בהקשר זה, ניסחנו את שאלות המחקר הבאות:
RQ1: כיצד ניתן למדל באופן כמותי את הסיכון השיורי של יישום תוך התחשבות במקורות זיהוי מרובים של חולשות?
RQ2: האם ניתן להפחית באופן משמעותי את זמן הזיהוי הממוצע (MTTD) מבלי להציג overhead מופרז ב-pipelines של CI/CD?
RQ3: האם שילוב של טלמטריית אבטחה בזמן אמת משפר את היכולת לזהות חולשות שניתנות לניצול בפועל?
התרומות העיקריות של עבודה זו הן:
• C1: פורמליזציה מתמטית של בעיית תעדוף החולשות כמזעור סיכון שיורי משוקלל.
• C2: הצעת ארכיטקטורה משולבת המשלבת SAST, DAST, SCA וטלמטריית ריצה.
• C3: הערכה ניסויית כמותית המשווה בין הגישה ההיברידית לבין שיטות מסורתיות.
שאר המאמר מאורגן כדלקמן: סעיף 2 מציג יסודות תאורטיים ועבודות קשורות; סעיף 3 מתאר את מודל האיום ואת פורמליזציית הבעיה; סעיף 4 מפרט את המתודולוגיה המוצעת; סעיף 5 מציג את המימוש; סעיף 6 מתאר את ההערכה הניסויית; סעיף 7 דן במחקר מקרה; סעיף 8 מציג השלכות ומגבלות; וסעיף 9 מסכם את העבודה.
- רקע ועבודות קשורות
אבטחת יישומים ניתן להגדיר באופן פורמלי כמכלול המנגנונים שנועדו לשמר את התכונות היסודיות של סודיות ($C$), שלמות ($I$) וזמינות ($A$) במערכות תוכנה (ANDERSON, 2020). יהי $S$ מערכת המורכבת ממודולים $m_i$, כאשר כל מודול עשוי להכיל חולשות $v_j$ השייכות לקבוצה $V$.
הסיכון הקשור לחולשה ניתן למדל כך:
$$ R(v_j) = P_e(v_j) \times I(v_j) $$
כאשר $P_e(v_j)$ מייצג את ההסתברות לניצול ו-$I(v_j)$ מייצג את ההשפעה הפוטנציאלית הקשורה לניצול.
ה-Open Web Application Security Project (OWASP) מתחזק את OWASP Top 10 כאחת מן ההפניות הנפוצות ביותר לסיווג הליקויים הקריטיים ביותר ביישומי ווב (OWASP FOUNDATION, 2021). בין הקטגוריות החוזרות בולטים הזרקה, כשלים בבקרת גישה, תצורות לא בטוחות וחולשות הקשורות לתלויות.
בהקשר של ניתוח סטטי, טכניקות המבוססות על ניתוח זרימת נתונים וגרפי תלות שימשו בהרחבה לזיהוי חולשות בקוד המקור (CHESS; WEST, 2007). כלים מודרניים כמו CodeQL משתמשים בשאילתות סמנטיות על ייצוגים ביניים של הקוד, ומאפשרים לזהות דפוסי חולשה מורכבים (MICROSOFT, 2023).
ניתוחים דינמיים, מצדם, משתמשים בטכניקות fuzzing ובניצול אוטומטי כדי לזהות כשלים במהלך הרצת היישום. Fuzzing מונחה-כיסוי הוכיח יעילות גבוהה בגילוי חולשות בתוכנה מורכבת (ZALDÍVAR et al., 2020).
עם זאת, מחקרים שונים מצביעים על מגבלות חשובות של גישות אלה כאשר הן משמשות באופן מבודד.
• כלי SAST מציגים לעיתים קרובות שיעורים גבוהים של false positives (BACA; CARLSSON, 2011).
• לכלי DAST יש כיסוי מוגבל של נתיבי ביצוע.
• כלי SCA תלויים בזמינות של מאגרי חולשות מעודכנים.
עם התפתחות שיטות DevSecOps, שילוב האבטחה לאורך מחזור הפיתוח הפך למטרה מרכזית. המושג shift-left security מדגיש זיהוי מוקדם של חולשות במהלך הפיתוח (MYERS; SANDERS, 2020). עם זאת, מעט עבודות בוחנות באופן פורמלי את האינטגרציה בין טכניקות ניתוח מרובות וטלמטריה תפעולית לצורך הערכת סיכון שיורי בזמן כמעט אמת.
- מודל איום ופורמליזציית הבעיה
אנו מניחים יריב $\mathcal{A}$ בעל יכולות ריאליסטיות בהקשר של יישומים החשופים לאינטרנט. ליריב יש גישה מרחוק באמצעות HTTP או HTTPS, והוא יכול לשלוח בקשות שרירותיות ולנצל כשלים פוטנציאליים באימות קלט או בלוגיקת היישום.
באופן פורמלי, אנו מניחים שליריב יש את היכולות הבאות:
- גישה מרחוק ליישום באמצעות ממשקים ציבוריים.
- יכולת לשלוח payloads שרירותיים ולתמרן פרמטרים של בקשות.
- ידע חלקי על ארכיטקטורת המערכת, בהתאם לתרחישים של white-box חלקי או חשיפת קוד.
מטרת היריב היא למקסם רווח $G$ הקשור לניצול חולשות.
אנו מגדירים את בעיית תעדוף החולשות כמזעור הסיכון השיורי:
$$ R_{residual} = \sum_{v_j \in V_{undetected}} P_e(v_j) \times I(v_j) $$
בכפוף לאילוץ התפעולי:
$$ T_{pipeline} \leq T_{max} $$
כאשר $T_{pipeline}$ מייצג את זמן הביצוע הכולל של ניתוחי האבטחה ב-pipeline של CI/CD.
הארכיטקטורה המוצעת חייבת לעמוד בשלוש תכונות יסוד:
• נכונות: יש לזהות חולשות קריטיות בהסתברות גבוהה.
• יעילות: ה-overhead החישובי חייב להישאר מתחת ל-20%.
• מדרגיות: אלגוריתם התעדוף חייב להיות בעל סיבוכיות $O(n \log n)$.
- המתודולוגיה המוצעת
הארכיטקטורה המוצעת בנויה מארבע שכבות עיקריות של ניתוח אבטחה.
- איסוף וניתוח סטטי של קוד באמצעות כלים כגון Semgrep ו-SonarQube.
- ניתוח דינמי של יישומים באמצעות סורקי DAST כגון OWASP ZAP או Burp Suite.
- ניתוח הרכב תוכנה (SCA) לצורך זיהוי תלויות פגיעות.
- טלמטריית אבטחה ב-runtime המבוססת על observability וזיהוי התנהגותי.
תהליך תעדוף החולשות מתבצע באמצעות אלגוריתם צבירת סיכון.
אלגוריתם 1: תעדוף חולשות
Input: V = conjunto de vulnerabilidades detectadas
Output: lista ordenada L
for each v in V:
score[v] = CVSS(v) ExposureFactor(v) AssetValue(v)
sort V by score descending
return V
הסיבוכיות החישובית של האלגוריתם היא $O(n \log n)$ בשל שלב המיון.
בנוסף, אנו משתמשים באינסטרומנטציה אדפטיבית כדי לשפר את כיסוי הבדיקות הדינמיות.
אלגוריתם 2: אינסטרומנטציה אדפטיבית
Input: CoverageMap C
while coverage(C) < threshold:
inject_probes(uncovered_paths)
execute_dynamic_scan()
מנגנון זה מאפשר להגדיל בהדרגה את הנראות כלפי נתיבי ביצוע קריטיים.
האינטגרציה התפעולית מתבצעת ב-pipelines של DevSecOps באמצעות שלבי ניתוח מקבילים.
- מימוש
המימוש הניסויי השתמש בסטאק הטכנולוגי הבא, התואם לסביבות אבטחת יישומים בשנת 2024.
| רכיב | כלי | גרסה |
|---|---|---|
| SAST | Semgrep | 1.45 |
| SAST | SonarQube | 10.2 |
| DAST | OWASP ZAP | 2.14 |
| SCA | Dependency-Track | 4.8 |
| IDS/IPS | Suricata | 7.0 |
| Runtime Security | Falco | 0.36 |
זיהוי אירועים חשודים הושלם באמצעות כללים המבוססים על תבנית Sigma.
logsource:
category: webserver
detection:
selection:
cs-uri-query|contains: "' OR 1=1"
condition: selection
level: high
Pipeline ה-CI/CD הוגדר לחסום merges במקרה שזוהו חולשות עם ציון CVSS גדול או שווה ל-8.0.
- הערכה ניסויית
ההערכה הניסויית בוצעה בסביבת מעבדה המורכבת מתשתית וירטואלית ומאשכול Kubernetes.
תצורת הסביבה:
• 3 שרתי Dell R740
• 128 GB זיכרון RAM לכל צומת
• Kubernetes 1.28
ה-dataset הניסויי כלל יישומים פגיעים במכוון ונפוצים מאוד במחקר אבטחה.
• OWASP Juice Shop
• Damn Vulnerable Web Application (DVWA)
• עשרה מיקרו-שירותים פנימיים המייצגים יישומים ארגוניים
המדדים שהוערכו כללו:
• Precision
• Recall
• זמן זיהוי ממוצע (MTTD)
• overhead חישובי
תוצאות שנצפו:
• Recall ממוצע: 91.3%
• Precision ממוצעת: 87.6%
• הפחתת MTTD: 63.4%
• overhead ממוצע: 17.8%
השוואה בין גישות:
| גישה | Recall | Overhead |
|---|---|---|
| SAST מבודד | 72% | 9% |
| DAST מבודד | 81% | 14% |
| הגישה ההיברידית המוצעת | 91.3% | 17.8% |
התוצאות מצביעות על שיפור מהותי ביכולת לזהות חולשות שניתן לנצל בפועל כאשר משלבים מקורות ניתוח מרובים.
- מחקר מקרה
ביצענו מחקר מקרה ביישום פינטק עם כ-2 מיליון משתמשים פעילים.
התהליך התקיים בארבעה שלבים:
- הרצת ניתוח SAST ראשוני, שהניב 342 ממצאים פוטנציאליים.
- יישום מודל התעדוף, שהפחית את הקבוצה ל-89 חולשות קריטיות.
- אימות דינמי באמצעות DAST, שאישר 41 חולשות שניתן לנצל בפועל.
- ניטור runtime, שזיהה ניסיון ניצול ממשי של SQL injection.
נמצא כי כ-52% מהממצאים הראשוניים של SAST תאמו false positives או חולשות שלא ניתנות לניצול בהקשר התפעולי.
הטלמטריה ב-runtime אפשרה להפחית את זמן התגובה לאירועים בכ-48%.
- דיון
התוצאות שהתקבלו מצביעות על כך ששילוב בין מנגנוני ניתוח אבטחה מרובים מייצר שיפורים מהותיים בזיהוי חולשות שניתן לנצל בפועל.
התרומה העיקרית של הארכיטקטורה המוצעת טמונה ביכולת לקשר תוצאות של ניתוח סטטי, ניתוח דינמי וטלמטריה תפעולית בתוך מודל כמותי של סיכון.
עם זאת, יש להביא בחשבון כמה מגבלות.
ראשית, היעילות של ניתוח דינמי תלויה בכיסוי הביצוע המושג במהלך הבדיקות. יישומים מורכבים עשויים לכלול נתיבי ביצוע נדירים שנותרים לא מנוצלים במהלך ה-fuzzing.
בנוסף, שילוב של מספר כלים מוסיף מורכבות תפעולית נוספת, ומחייב pipelines של CI/CD מובנים היטב ומנגנוני observability חזקים.
לסביבות ארגוניות, מומלץ לשלב עם פלטפורמות SIEM כגון Elastic Security או Splunk, וכן לאמץ מודל איומים מתמשך המבוסס על מתודולוגיות כגון STRIDE (SHOSTACK, 2014).
- מסקנה
עבודה זו הציגה ארכיטקטורה כמותית לאבטחת יישומים המבוססת על שילוב של ניתוח סטטי, ניתוח דינמי, ניתוח תלויות וטלמטריית ריצה.
הראינו כי פורמליזציה של בעיית תעדוף החולשות כמזעור סיכון שיורי מאפשרת לשלב ראיות הטרוגניות במודל החלטה מאוחד.
התוצאות הניסיוניות מצביעות על כך שהגישה ההיברידית משפרת באופן משמעותי את היכולת לזהות חולשות שניתן לנצל בפועל, ובו-בזמן מפחיתה את זמן הזיהוי הממוצע מבלי להציג overhead תפעולי משמעותי.
בסביבות מודרניות של פיתוח מתמשך וארכיטקטורות מבוזרות, השילוב בין observability תפעולית וניתוח קוד נעשה רכיב יסודי לתוכניות Application Security יעילות.
References
ANDERSON, Ross. Security engineering: a guide to building dependable distributed systems. 3. ed. Hoboken: Wiley, 2020. Available at: https://www.cl.cam.ac.uk/~rja14/book.html. Accessed on: 13 abr. 2024.
BACA, Dejan; CARLSSON, Bengt. The impact of static code analysis on software security. Information and Software Technology, v. 53, n. 12, p. 1231–1242, 2011. Available at: https://doi.org/10.1016/j.infsof.2011.05.002. Accessed on: 13 abr. 2024.
BEHL, Abhishek; BEHL, Ketan. Cybersecurity and cyberwar: what everyone needs to know. Oxford: Oxford University Press, 2017. Available at: https://global.oup.com. Accessed on: 13 abr. 2024.
BEHL, Abhishek. Cybersecurity analytics. Boca Raton: CRC Press, 2017. Available at: https://www.routledge.com. Accessed on: 13 abr. 2024.
CHESS, Brian; WEST, Jacob. Secure programming with static analysis. Boston: Addison-Wesley, 2007. Available at: https://www.informit.com/store/secure-programming-with-static-analysis-9780321424778. Accessed on: 13 abr. 2024.
ENISA. Threat landscape 2023. European Union Agency for Cybersecurity, 2023. Available at: https://www.enisa.europa.eu/publications/enisa-threat-landscape-2023. Accessed on: 13 abr. 2024.
FIRST. Common Vulnerability Scoring System v3.1 specification. 2019. Available at: https://www.first.org/cvss/. Accessed on: 13 abr. 2024.
GREEN, Matthew; SMITH, Matthew. The cryptopals crypto challenges. 2018. Available at: https://cryptopals.com. Accessed on: 13 abr. 2024.
KRUCKENBERG, J.; SMITH, J. Modern application security. IEEE Security & Privacy, v. 20, n. 2, 2022. Available at: https://ieeexplore.ieee.org. Accessed on: 13 abr. 2024.
MICROSOFT. CodeQL documentation. 2023. Available at: https://codeql.github.com/docs/. Accessed on: 13 abr. 2024.
MITRE. MITRE ATT&CK framework. 2024. Available at: https://attack.mitre.org. Accessed on: 13 abr. 2024.
MYERS, Brad; SANDERS, Chris. DevSecOps: integrating security into DevOps pipelines. IEEE Software, v. 37, n. 5, 2020. Available at: https://doi.org/10.1109/MS.2020.2992784. Accessed on: 13 abr. 2024.
NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY. NVD: CVE‑2021‑44228 detail. 2021. Available at: https://nvd.nist.gov/vuln/detail/CVE-2021-44228. Accessed on: 13 abr. 2024.
OWASP FOUNDATION. OWASP Top 10:2021. 2021. Available at: https://owasp.org/Top10/. Accessed on: 13 abr. 2024.
OWASP FOUNDATION. OWASP Juice Shop project. 2023. Available at: https://owasp.org/www-project-juice-shop/. Accessed on: 13 abr. 2024.
PENG, X.; CHEN, Z. Fuzz testing techniques and tools. ACM Computing Surveys, v. 52, n. 5, 2019. Available at: https://doi.org/10.1145/3335473. Accessed on: 13 abr. 2024.
SCARFONE, Karen; MELL, Peter. Guide to intrusion detection and prevention systems. NIST Special Publication 800-94. 2007. Available at: https://nvlpubs.nist.gov. Accessed on: 13 abr. 2024.
SHOSTACK, Adam. Threat modeling: designing for security. Indianapolis: Wiley, 2014. Available at: https://www.microsoft.com/en-us/securityengineering/sdl/threatmodeling. Accessed on: 13 abr. 2024.
SOMMERVILLE, Ian. Software engineering. 10. ed. Boston: Pearson, 2016. Available at: https://www.pearson.com. Accessed on: 13 abr. 2024.
STALLINGS, William; BROWN, Lawrie. Computer security: principles and practice. 4. ed. Boston: Pearson, 2018. Available at: https://www.pearson.com. Accessed on: 13 abr. 2024.
VERIZON. 2023 data breach investigations report. 2023. Available at: https://www.verizon.com/business/resources/reports/dbir/. Accessed on: 13 abr. 2024.
ZALDÍVAR, Alejandro et al. Coverage-guided fuzzing for complex software systems. IEEE Security & Privacy, v. 18, n. 4, 2020. Available at: https://doi.org/10.1109/MSEC.2020.2992210. Accessed on: 13 abr. 2024.
U.S. HOUSE OF REPRESENTATIVES. The Equifax data breach. Committee on Oversight and Government Reform Report, 2018. Available at: https://oversight.house.gov. Accessed on: 13 abr. 2024.
CNCF. Falco runtime security project. 2024. Available at: https://falco.org. Accessed on: 13 abr. 2024.
OPEN INFORMATION SECURITY FOUNDATION. Suricata intrusion detection system documentation. 2024. Available at: https://suricata.io. Accessed on: 13 abr. 2024.