הכוננת אפשרויות Apache APISIX עם Coraza וקורסט הכוחות המרכזי של OWASP

פרויקט האבטחה של יישומים פתוח ברחבי העולם הוא קהילת מקוונת המייצרת מאמרים, שיטות, תיעוד, כלים וטכנולוגיות בחינם בתחומים של אינטרנט של דברים, תוכנה מערכתיות ואבטחת יישומים מקוונים. ה-OWASP מספק משאבים חופשיים ופתוחים. הוא מובל על ידי עמותה ללא כוונת רווח בשם ה-OWASP Foundation. ה-OWASP Top 10 – 2021 הוא התוצאה הפרסומית של מחקר עדכני המבוסס על נתונים מקיפים שנאסף מיותר מ-40 מיזם שותף.

– אתר OWASP

ה-OWASP מתעדכן באופן קבוע בדו"ח על תכונות ה-Top 10. הדו"ח מכוון לפגמים ביישומים מקוונים.

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

ה-OWASP Top 10 2021

ב-2021, הדו"ח מזכיר:

  • A01:2021-שבר בשליטה על הגישה
  • A02:2021-כשלים קריפטוגרפיים
  • A03:2021-הזרה
  • A04:2021-בטיחות לא מאובטחת
  • A05:2021-פגם בפעילות בטיחותית
  • A06:2021-רכיבים פגומים ומאוחרים
  • A07:2021-כשלים בזיהוי ואימות
  • A08:2021-כשלים באימות ובשליטה על איכות התוכנה והנתונים
  • A09:2021-כשלים בתיעוד ובניטור בטיחותי
  • A10:2021-בקשת גישה מרכזית מצד השרת

לקבלת פרטים נוספים, נא לבדוק את הדוח המלא report.

תיקון פגיעות תלוי בטבעם המדויק. לדוגמה, תיקון Vulnerable and Outdated Components הוא תהליך מונחה, דורש משמעת בניהול גרסאות ובטלת גרסאות ישנות. עם זאת, יש כאלה שהם טכניים ודורשים רק התקנה נכונה בפרוטוקול הפוך או שער ה-API, למשל, Server Side Request Forgery.

אף אחד לא מכיר באבטחה

אבטחה היא נושא רגיש מכיוון שהחזקת אבטחה אינה מביאה ערך לעסק. מנהלים מונעים על ידי קריירה לא יהיו אכפתיים מאבטחה מכיוון שלא יוכלו להציג שהם הגדילו את רווח החברה ב-X% בערכה השנתית הבאה שלהם. אלא אם כן ההנהלה רואה באבטחה ברצינות, סביר להניח שאף אחד לא יאכלל. מסיבה זו, רוב הארגונים מיישמים אבטחה מבוססת תיבות ביקורת, כלומר, שליטה פלוסיבית. אם אתה מעוניין ליישם אבטחה באופן נכון, כתבתי כמה מחשבות בפוסט בלוג קודם: "Treat Security as a Risk."

בסך הכל, אבטחת אפליקציות לא תקבל הרבה תקציב, אם בכלל. לכן, עלינו להיות חכמים בנוגע אליו ולחפש רכיב קיים. למרבה המזל, OWASP מציעה התקנה מוכן מראש להתמודדות עם 10 הראשונים, שניתן לתקן דרך התקנה הנקרא Core Rule Set. למרבה הצער, זה מכוון ל-ModSecurity:

ModSecurity, בשם הקיצור Modsec, היא שער אינטרנט פתוח המיועד לאבטחת יישומים ווב (WAF). תוכנן במקור כמודול לשרת ה HTTP של Apache, התפתח לכך שהוא מספק מגוון של יכולות סנכרון בקשות ותגובות של HTTP וכן תכונות אבטחה נוספות ברחבי מספר פלטפורמות, כולל שרת ה- HTTP של Apache, Microsoft IIS ו- Nginx. זהו תוכנה חופשית המשוחררת תחת רישיון Apache 2.0.

ModSecurity בוויקיפדיה

למרות שזה בכלליות אפשרי להגדיר את Nginx דרך הגדרות Apache APISIX, ישנה דרך ישירה יותר.

תוכנת הכללים המרכזית של OWASP ו- Coraza

התיאור של תוכנת הכללים המרכזית הוא די רלוונטי לצרכינו:

תוכנת הכללים המרכזית של OWASP® ModSecurity (CRS) היא קבוצה של כללים זיהוי תקיפה גנריים לשימוש עם ModSecurity או שערי אבטחת יישומים ווב מתאימים. ה- CRS מטרתו להגן על יישומים ווב מפני מגוון רחב של תקיפות, כולל את העשר העיקרי של OWASP, עם מינימום של אזעקות שגויות. ה- CRS מספק הגנה מול קטגוריות רבות של תקיפות נפוצות, כולל:

  • הזרקת SQL (SQLi)
  • סקריפטים מרוחקים (XSS)
  • כניסה לקובץ מקומי (LFI)
  • כניסה לקובץ רחוק (RFI)
  • הזרקת קוד PHP
  • הזרקת קוד Java
  • HTTPoxy
  • Shellshock
  • הזרקת קוד של פלטפורמת Unix/Windows
  • תיקון סדר שיחה
  • זיהוי סקריפטים/סורגים/בוטים
  • דלוגים/דליפות שגיאות

– אתר OWASP® ModSecurity Core Rule Set

OWASP מספק גם Coraza, שינון של ModSecurity זמין כספריית Go. Coraza Proxy Wasm מבוסס על Coraza ומיישם את ABI של proxy-wasm, שמגדיר אוסף של ממשקים Wasm למסכים. לבסוף, Apache APISIX מספק שילוב proxy-wasm.

להרכיב הכול יחד

בואו נסכם:

  1. OWASP מספק רשימה של 10 הנכונים ביותר של פגמים אבטחה אינטרנטיים.
  2. היא מיישמת אותם עבור ModSecurity דרך Core Ruleset.
  3. Coraza היא שינון של ModSecurity, זמין כיישום proxy-wasm.

אנו יכולים להגדיר את Apache APISIX עם נטיבים בטיחוניים ואבטחה כזה. בואו נעשה זאת.

קודם כל: Coraza אינה חלק מהתקן של Apache APISIX. עם זאת, קל להוסיף אותה כאן עם Docker:

Dockerfile

 

FROM apache/apisix:3.8.0-debian

ENV VERSION 0.5.0                                                           #1
ENV CORAZA_FILENAME coraza-proxy-wasm-${VERSION}.zip                        #1

ADD https://github.com/corazawaf/coraza-proxy-wasm/releases/download/$VERSION/$CORAZA_FILENAME . #2

USER root                                                                   #3

RUN <<EOF

  apt-get install zip -y                                                    #4
  unzip $CORAZA_FILENAME -d /usr/local/apisix/proxywasm
  rm $CORAZA_FILENAME
  apt-get remove zip -y
  chown -R apisix:apisix /usr/local/apisix/proxywasm

EOF

USER apisix                                                                 #5

  1. הגדר משתנים לשמירה טובה יותר על תחזוקה
  2. קבל את השחרור של Coraza Wasm.
  3. בגרסאות APISIX האחרונות, המשתמש הוא apisix להתמקדות באבטחה. כשאנו צריכים להתקין חבילות, עלינו לעבור ל root.
  4. התקן unzip מאחר שהוא אינו מותקן, פרוס את הארייה ההורדה, הסר את הארייה, התקן unzip, ושנה את בעלות התיקייה המופרשת.
  5. חזור חזרה למשתמש apisix

השלב הבא הוא הגדרת APISIX עצמו להשתמש בתוסף Coraza Wasm.

YAML

 

wasm:
  plugins:
    - name: coraza-filter                                                   #1
      priority: 7999                                                        #2
      file: /usr/local/apisix/proxywasm/coraza-proxy-wasm.wasm              #3

  1. שמה של הפילטר בקוד Wasm
  2. קבע את העדיפות הגבוהה ביותר כך שהוא ירוץ לפני כל תוסף אחר.
  3. נתיב לקובץ הנפרד (ראה את Dockerfile לעיל)

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

YAML

 

global_rules:
  - id: 1
    plugins:
      coraza-filter:                                                        #1
        conf:
          directives_map:                                                   #2
            default:
              - SecDebugLogLevel 9                                          #3
              - SecRuleEngine On                                            #4
              - Include @crs-setup-conf                                     #5
              - Include @owasp_crs/*.conf                                   #6
          default_directives: default                                       #7

  1. הגדר את התוסף coraza-filter, עכשיו כשהוא זמין.
  2. הגדר הגדרות. כאן, אנו מגדירים אחת בודדת, default, אך יכולנו להגדיר מספר ולהשתמש באחרים בנתיבים שונים.
  3. הגדל את רמת היומן כדי לראות מה קורה ביומנים.
  4. הדליק את המנוע.
  5. השתמש בהתקנת Coraza.
  6. השתמש בכל הכללים. יכולנו לבחור ולבחור את אלה שאנו רוצים לשליטה מדויקת יותר.
  7. השתמש בהגדרה default שהוגדרה לעיל.

אנו ממשיכים להגדיר נתיבים לבדוק את ההתקנה שלנו. בואו נקרא לנתיב ל /get:

Shell

 

curl localhost:9080?user=foobar

התגובה כצפוי:

JSON

 

{
  "args": {
    "user": "foobar"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Host": "localhost", 
    "User-Agent": "curl/8.4.0", 
    "X-Amzn-Trace-Id": "Root=1-65b9fa13-75900dc029e156ec764ae204", 
    "X-Forwarded-Host": "localhost"
  }, 
  "origin": "192.168.65.1, 176.153.7.175", 
  "url": "http://localhost/get?user=foobar"
}

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

Shell

 

curl 'localhost:9080?user=<script>alert(1)</script>'

התגובה היא קוד HTTP 403. אם נסתכל ביומן, נוכל לראות את הרמזים הבאים:

Plain Text

 

Coraza: Warning. XSS Attack Detected via libinjection [file "@owasp_crs/REQUEST-941-APPLICATION-ATTACK-XSS.conf"]
Coraza: Warning. NoScript XSS InjectionChecker: HTML Injection
Coraza: Warning. Javascript method detected
Coraza: Access denied (phase 1). Inbound Anomaly Score Exceeded in phase 1

Coraza עשתה את העבודה!

מסקנה

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

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

ללכת רחוק יותר

קוד המקור המלא לפוסט זה ניתן למצוא בGitHub.

Source:
https://dzone.com/articles/hardening-apache-apisix-with-the-owasps-coraza-and