מתקפת ה- ReDoS

בעולם אבטחת המידע קיימות התקפות רבות ומגוונות, ואנו מעוניינים להתמקד כרגע באחת ההתקפות אשר אינה נחשבת לנפוצה ומוכרת בקרב מומחי אבטחת מידע ולהסביר את מהותה.בעולם אבטחת המידע קיימות התקפות רבות ומגוונות, ואנו מעוניינים להתמקד כרגע באחת ההתקפות אשר אינה נחשבת לנפוצה ומוכרת בקרב מומחי אבטחת מידע ולהסביר את מהותה.
הקדמה
על מנת להבין את מהות מתקפת ה- ReDoS יש צורך תחילה להבין שני מושגי יסוד:
התקפת Denial Of Service (DoS)
מטרת התקפה זו הינה להזיק למערכות הנתקפות באמצעות השבתת העבודה בהם.
השיטה בה משתמשים במתקפה זו הינה באמצעות העמסת יתר על הרכיב אותו תוקפים עד לקריסתו.
אחת ההתקפות היותר נפוצות נקראת DDoS, כלומר Distributed DoS, שמטרתה הינה להשבית את הרכיב הנתקף באמצעות ביצוע התקפת DoS ממספר רב של תחנות באינטרנט אשר נקראות Bots .
Regular Expression
נקרא בקיצור Regex, והוא מתאר קבוצת מחרוזות על פי כללי תחביר מסוימים, לדוגמה: קיים Regex  שתפקידו לבדוק את הקלט המוזן ככרטיס אשראי באתרים, כדוגמת אחת מחברות האשראי אשר מיושם באמצעות הביטוי הבא: ^5[1-5][0-9]{14}$  .
ביטוי זה מראה שמספר הכרטיס מתחיל ב – 5, ולאחר מכן אחת מהספרות 1-5, ואחריהם עוד 14 מספרים בין 0 ל -9.
כלומר, ניתן להזין קלטים לאפליקציות בהתאם לקבוצות המחרוזות (Regex) שהוגדרו בהן.
יישום ה – Regex נפוץ בעיקר במנועי חיפוש, אתרי Web, שדות טקט באפליקציות ועוד.
ניתן לראות דוגמאות ל – Regex באתר http://regexlib.com/
התקפת ReDoS
התקפה זו מורכבת משני המושגים שהוסברו לעיל, והיא נקראת גם Regex Denial of Service.
כאשר מיישמים Regex  באפליקציות, בד"כ המטרה היא לסנן את הקלטים שאינם חוקיים, ואשר עלולים לגרום לפגיעה במערכת. עם זאת, ביישום Regex  קיימת פגיעות, והיא למעשה ניצול יכולות החיפוש שלו באופן שהחיפוש יימשך באורך אקספוננציאלי.
לדוגמה, אם ניקח את הביטוי הבא:  (a+)+
ובאתר נכניס את הקלט aaaaB, אזי נקבל 16 פעולות שבוצעו היות וקיימות 24 אפשרויות לייצוג הקלט במערכת.
כעת תתארו שהקלט הוא aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaB, מה יקרה בשרת ה – Web? נכון מאוד, DoS. לכן למתקפה זו קוראים ReDoS, מכיוון שהיא מבוססת על Regex.
 
אילו רכיבים ניתנים לתקיפה?
ההתקפה מיושמת בעיקר על אתרי Web, אך ניתן ליישם אותה מול שרתי IPS,  WAF (Web Application Firewall), Proxy ואפילו בסיסי נתונים. כמו כן, לא רק שרתים פגיעים אלא גם טלפונים חכמים ומחשבים אישיים, מכיוון שניתן להריץ עליהם JavaScript פוגעני.
כיצד מנצלים פגיעות זו?
קיימות מספר דוגמאות, נתמקד בשלב זה באחת. ניתן להריץ Regex באמצעות JavaScript במחשבים האישיים כאמור. ניתן להיכנס לקוד של דף האינטרנט (View Source), ולראות את הביטוי הרגולרי שהוגדר. לאחר שידועה מחרוזת הבדיקה קל יותר לנצל את הפגיעות.
 
מה הסבירות ליישום מתקפה זו?
נדרש שבשרת האפליקציה או בשרת ה – WAF יהיה שימוש בביטויים רגולריים אשר אינם מוגדרים כנדרש.
מצד שני, מומחי אבטחת מידע ומפתחי תוכנה רבים אינם מכירים את המתקפה, וכנגזרת מכך אינם רואים בכך סיכון.
לכן הסבירות למימוש המתקפה היא בינונית.
 
האם קיימים כלים לאיתור המתקפה?
אין כלים מספיק טובים לביצוע הבדיקה. אם בכל זאת כלים מעניינים אתכם, ניתן למצוא שלל כלים בקישור: http://www.softwareqatest.com/qatweb1.html
כמו כן, בשלבי בדיקות ה – QA לא מתבצעת בדיקה של מקרים חריגים עבור ה – Regex אלא רק עבור הפונקציונאליות של האפליקציה.
מה עושים? הפתרון היחיד במצב זה הוא קבלת ייעוץ מגורם שמכיר את הנושא. כמו כן, ניתן לבצע בדיקות חוסן על האתר, כלומר לתת להאקר לבן לנסות לפרוץ לאתר באמצעות מתקפה זו בלבד.

המאמר נכתב על ידי ניר ולטמן וקובי לכנר

דילוג לתוכן