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

Paper Files / AppSec

כותרת: ארכיטקטורה כמותית של Application Security המבוססת על מודלינג פורמלי של איומים, אינטגרציה של SAST/DAST/SCA וטלמטריית runtime בסביבות DevSecOps

AppSecHE

כותרת: ארכיטקטורה כמותית של Application Security המבוססת על מודלינג פורמלי של איומים, אינטגרציה של SAST/DAST/SCA וטלמטריית runtime בסביבות DevSecOps תקציר: התלות הגוברת ביישומי ווב, APIs וארכיטקטורות מבוססות microservices הרחיבה באופן משמעותי את משטח התקיפה של מערכות מודרניות. דוחות אחרונים על אירועי אבטחה מצביעים על כך שניצול יישומים החשופים לאינטרנט נותר בין וקטורי החדירה הנפוצים ביותר, לעיתים קרובות תוך ניצול חולשות ידועות בספריות, כשלים באימות קלט או תצורות בלתי הולמות. אף שכלי אבטחת יישומים, כגון ניתוח סטטי (SAST), ניתוח דינמי (DAST) וניתוח הרכב תוכנה (SCA), נמצאים בשימוש נרחב ב-pipelines של DevSecOps, מנגנונים אלה פועלים בדרך כלל באופן מקוטע וללא מסגרת כמותית המאפשרת לאמוד את הסיכון השיורי של המערכת. עבודה זו מציעה ארכיטקטורה משולבת של Application Security המבוססת על מודלינג פורמלי של איומים, צבירת תוצאות ממקורות ניתוח מרובים ושילוב טלמטריית ביצוע בזמן אמת. אנו מנסחים פורמלית את בעיית תעדוף החולשות כתהליך של מזעור סיכון שיורי משוקלל, שבו כל חולשה מוערכת על בסיס מדדי הסתברות לניצול, השפעה פוטנציאלית והקשר תפעולי. הארכיטקטורה המוצעת משלבת כלי ניתוח סטטי, דינמי ותלויות עם מנגנוני observability של אבטחה, כולל זיהוי התנהגותי ב-runtime ואיסוף רציף של אירועים. הערכנו את הגישה באופן ניסויי בסביבה המורכבת מיישומים פגיעים במכוון ומ-microservices אמיתיים הפועלים בתשתית מבוססת container. התוצאות מצביעות על שיפור משמעותי ביכולת לזהות חולשות שניתן לנצל בפועל, עם עלייה ב-recall הממוצע ל-91.3% והפחתה של 63.4% בזמן הממוצע לזיהוי (MTTD) בהשוואה לגישות מבודדות. התקורה החישובית שנצפתה נותרה מתחת ל-20%, תואמת לדרישות התפעוליות של pipelines מודרניים של CI/CD. בנוסף, אנו דנים בהשלכות עבור תוכניות AppSec ארגוניות, ומדגישים את החשיבות של אינטגרציה בין ניתוח קוד, ניטור תפעולי ו-intelligence של איומים. הארכיטקטורה המוצעת מדגימה כי השילוב של מודלינג פורמלי עם טלמטריית runtime מספק בסיס מוצק לתעדוף חולשות בהקשרן ולהפחתה אפקטיבית של הסיכון השיורי במערכות תוכנה עכשוויות.

  1. מבוא

משטח התקיפה העכשווי מורכב בעיקרו מיישומי web, ‏APIs REST ושירותים מבוזרים המופעלים בסביבות ענן ותשתיות מוכללות ב־containers. מחקרים אמפיריים שונים מדגימים כי ניצול של יישומים החשופים לאינטרנט נותר בין וקטורי החדירה החוזרים ביותר באירועי אבטחה (VERIZON, 2023). בהקשר של מסגרת MITRE ATT&CK, טכניקות כגון T1190 (Exploit Public-Facing Application) ו־T1505 (Server-Side Component) מופיעות בעקביות במסעות של ransomware, ריגול דיגיטלי ופגיעה בשרשראות אספקה (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) מבלי להוסיף תקורה מוגזמת ל־pipelines של CI/CD?

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

התרומות העיקריות של עבודה זו הן:

• C1: פורמליזציה מתמטית של בעיית תעדוף החולשות כמזעור סיכון שיורי משוקלל.
• C2: הצעה לארכיטקטורה משולבת המשלבת SAST, DAST, SCA וטלמטריית ריצה.
• C3: הערכה ניסויית כמותית המשווה את הגישה ההיברידית לשיטות מסורתיות.

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

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

ניתן להגדיר באופן פורמלי את אבטחת היישומים כמכלול המנגנונים שמטרתם לשמר את התכונות הבסיסיות של סודיות ($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 כאחת מההפניות הנפוצות ביותר לסיווג הכשלים הקריטיים ביותר ביישומי web (OWASP FOUNDATION, 2021). בין הקטגוריות החוזרות בולטות הזרקה, כשלים בבקרת גישה, תצורות לא מאובטחות וחולשות הקשורות לתלויות.

בהקשר של ניתוח סטטי, טכניקות המבוססות על ניתוח זרימת נתונים וגרפי תלות שימשו בהרחבה לזיהוי חולשות בקוד המקור (CHESS; WEST, 2007). כלים מודרניים כגון CodeQL משתמשים בשאילתות סמנטיות על ייצוגים ביניים של הקוד, ומאפשרים לזהות דפוסי חולשה מורכבים (MICROSOFT, 2023).

לעומת זאת, ניתוחים דינמיים עושים שימוש בטכניקות fuzzing ובניצול אוטומטי כדי לזהות כשלים במהלך ריצת היישום. fuzzing מונחה כיסוי הראה יעילות גבוהה בגילוי חולשות בתוכנה מורכבת (ZALDÍVAR et al., 2020).

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

• כלי SAST מציגים לעיתים קרובות שיעורים גבוהים של תוצאות שווא חיוביות (BACA; CARLSSON, 2011).
• כלי DAST בעלי כיסוי מוגבל של נתיבי הרצה.
• כלי SCA תלויים בזמינות של מסדי חולשות מעודכנים.

עם התפתחות שיטות DevSecOps, שילוב האבטחה לאורך מחזור הפיתוח נעשה יעד מרכזי. המושג shift-left security מדגיש זיהוי מוקדם של חולשות במהלך הפיתוח (MYERS; SANDERS, 2020). עם זאת, מעט עבודות בוחנות באופן פורמלי את האינטגרציה בין טכניקות ניתוח מרובות וטלמטריה תפעולית לצורך הערכת סיכון שיורי בזמן כמעט אמת.

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

אנו מניחים יריב $\mathcal{A}$ בעל יכולות מציאותיות בהקשר של יישומים החשופים לאינטרנט. ליריב יש גישה מרחוק באמצעות HTTP או HTTPS, והוא יכול לשלוח בקשות שרירותיות ולנצל כשלים פוטנציאליים באימות קלט או בלוגיקת היישום.

באופן פורמלי, אנו מניחים שליריב יש את היכולות הבאות:

  1. גישה מרחוק ליישום באמצעות ממשקים ציבוריים.
  2. יכולת לשלוח payloads שרירותיים ולתפעל פרמטרים של בקשה.
  3. ידע חלקי על ארכיטקטורת המערכת, עקבי עם תרחישי 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.

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

• נכונות: חולשות קריטיות חייבות להתגלות בהסתברות גבוהה.
• יעילות: התקורה החישובית חייבת להישאר מתחת ל־20%.
• מדרגיות: לאלגוריתם התעדוף צריכה להיות סיבוכיות $O(n \log n)$.

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

הארכיטקטורה המוצעת בנויה מארבע שכבות עיקריות של ניתוח אבטחה.

  1. איסוף וניתוח סטטי של קוד באמצעות כלים כגון Semgrep ו־SonarQube.
  2. ניתוח דינמי של יישומים באמצעות סורקי DAST כגון OWASP ZAP או Burp Suite.
  3. ניתוח הרכב תוכנה (SCA) לזיהוי תלויות פגיעות.
  4. טלמטריית אבטחה ב־runtime המבוססת על observability ועל זיהוי התנהגותי.

תהליך תעדוף החולשות מתבצע באמצעות אלגוריתם צבירת סיכון.

אלגוריתם 1: תעדוף חולשות

Input: V = set of detected vulnerabilities
Output: ordered list 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 באמצעות שלבי ניתוח מקבילים.

  1. מימוש

המימוש הניסויי השתמש ב־stack הטכנולוגי הבא, התואם לסביבות אבטחת יישומים ב־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.

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

ההערכה הניסויית בוצעה בסביבת מעבדה המורכבת מתשתית וירטואלית ו־cluster של Kubernetes.

תצורת הסביבה:

• 3 שרתי Dell R740
• 128 GB זיכרון RAM לכל node
• Kubernetes 1.28

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

• OWASP Juice Shop
• Damn Vulnerable Web Application (DVWA)
• עשרה microservices פנימיים מייצגים של יישומים ארגוניים

המדדים שהוערכו כללו:

• Precision
• Recall
• זמן גילוי ממוצע (MTTD)
• תקורה חישובית

תוצאות שנצפו:

• Recall ממוצע: 91,3%
• Precision ממוצע: 87,6%
• הפחתת MTTD: 63,4%
• תקורה ממוצעת: 17,8%

השוואה בין גישות:

גישה Recall תקורה
SAST מבודד 72% 9%
DAST מבודד 81% 14%
הגישה ההיברידית המוצעת 91,3% 17,8%

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

  1. מחקר מקרה

ביצענו מחקר מקרה ביישום fintech בעל כשני מיליון משתמשים פעילים.

התהליך התרחש בארבעה שלבים:

  1. הרצת ניתוח SAST ראשוני, שהניבה 342 ממצאים פוטנציאליים.
  2. יישום מודל התעדוף, שהפחית את הקבוצה ל־89 חולשות קריטיות.
  3. ולידציה דינמית באמצעות DAST, שאישרה 41 חולשות הניתנות לניצול.
  4. ניטור runtime, שזיהה ניסיון ניצול ממשי של SQL injection.

נמצא כי כ־52% מהממצאים הראשוניים של ה־SAST היו תוצאות שווא חיוביות או חולשות שאינן ניתנות לניצול בהקשר התפעולי.

טלמטריית runtime אפשרה להפחית את זמן התגובה לאירועים בכ־48%.

  1. דיון

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

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

עם זאת, יש להביא בחשבון כמה מגבלות.

ראשית, יעילותו של הניתוח הדינמי תלויה בכיסוי ההרצה המושג במהלך הבדיקות. יישומים מורכבים עלולים לכלול נתיבים המבוצעים לעיתים רחוקות ונשארים לא מנוצלים במהלך ה־fuzzing.

בנוסף, שילוב של כלים מרובים מוסיף מורכבות תפעולית נוספת, ומחייב pipelines של CI/CD מובנים היטב ומנגנוני observability חזקים.

עבור סביבות ארגוניות, מומלץ לשלב עם פלטפורמות SIEM, כגון Elastic Security או Splunk, וכן לאמץ מודל איומים מתמשך המבוסס על מתודולוגיות כגון STRIDE (SHOSTACK, 2014).

  1. מסקנה

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

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

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

בסביבות מודרניות של פיתוח מתמשך וארכיטקטורות מבוזרות, השילוב בין 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.