ארבע שנים לאחר העדכון האחרון, עדכן לפני כחודש ארגון הOWASP את הTOP 10 של הפגיעויות באתרי האינטרנט. משום-מה, טרם ראיתי שיצא מאמר בעברית שסוקר את השינויים והחידושים בTOP 10 2021 אל-מול הגרסה האחרונה של טבלת דירוג הפגיעויות הפופולארית, זאת שיצאה בשנת 2017. בעקבות-זאת החלטתי לחרוג ממנהגי ולכתוב פוסט קצר מהרגיל שיסכם את גרסת ה2021.
בOWASP TOP 10 2021 ישנם שלוש קטגוריות חדשות, ארבע קטגוריות עם שינויי שם והיקף, כשהדבר המעניין ביותר הוא שמחד, לראשונה זה שנים הפגיעות שמאז ומתמיד סווגה כA01, הלא היא Injection, יורדת למקום השלישי והמכובד ומאידך, הפגיעות המיתולוגית Cross Site Scripting שהייתה נחשבת לאחת מהפגיעויות המשמעויות והפופולאריות ביותר מאבדת מיוקרתה וכבר לא זוכה לקטגוריה משלה.
A01 – Broken Access Control
הפגיעות שהייתה ב2017 רק במקום החמישי עולה למקום הראשון בשל הפופולאריות הגדולה שהייתה לה במבדקים שביצעה OWASP באתרי אינטרנט. הפגיעות מדברת על הצורך לוודא ולאכוף את ההרשאות במערכת, כך שלמשתמשים לא מורשים לא יהיה גישה לאזורים רגישים במערכת. לדוגמא, כאשר דף המיועד רק למנהלי המערכת חשוף לכל אחד, רק בעזרת הוספת נתיב בURL (לדוגמא: אם cyber-eliya.com/admin היה מוביל אתכם לדף רגיש במערכת). לחלופין, כאשר תוקף מצליח לעקוף את מנגנון הJWT במערכת (ר"ת Json Web Token, תקן מבוסס Json ליצירת מפתח גישה למערכת), כאשר הגדרות הCROS (ר"ת של Cross Origin Resource Sharing, מנגנון הקובע את סט החוקים בנוגע לקריאה וכתיבה מהאתר שלנו) מוגדרות באופן שגוי וכו', כאשר ניתן לבצע גישה לחשבונות של משתמשים אחרים במערכת ע"י שינוי ID (פגיעות המוכרת כParameter Tampering) וכו' וכו'.
A02 – Cryptographic Failures
ויש לנו גם אורחת חדשה-ישנה. הפגיעות שב2017 הייתה מוכרת כSensitive Data Exposure ודורגה במקום השלישי, עולה מקום אחד למעלה וגם זוכה לשם חדש שהיה מוכר לנו יותר מOWASP TOP 10 Mobile, הלא הוא Cryptographic Failures. קטגוריה זו מדברת בעיקר על חשיפת נתונים רגישים במערכת, דליים פתוחים וכן הלאה. המסר המרכזי בקטגוריה זו הוא החשיבות בשמירת מידע רגיש בצורה מאובטחת דיו, בGDPR (תקן הגנת הפרטיות של האיחוד האירופאי). לדוגמא: סיסמאות, מספרי כרטיסי אשראי ומידע אישי בכלל חייבים לעבור בהצפנת TLS המקסימלית ולהישמר בצורה מוצפנת, מגובבת ומאובטחת (ולא בClear Text כמו שרבים מהארגונים נוהגים לשמור מידע כזה). היא מדברת גם על החשיבות במימוש HSTS (ר"ת של HTTP Strict Transport Security, מנגנון שלא מאפשר גלישה באתר בHTTP גם כאשר נעשה ניסיון לשנות בURL את הפרוטוקול מHTTPS לHTTP), שימוש במספרים אקראיים דיו (ולא כאלו בעלי היגיון לוגי או שניתן לפענח בעזרת Bruthe force), שימוש בפרוטוקולי הצפנה חדישים ומוכרים ובפרוטוקולי גיבוב חדישים ומוכרים (ולא בכאלו שיצאו מכלל שימוש, כמו MD5 או SHA1).
A03 – Injection
הפגיעות ששמרה על המקום הראשון באדיקות כמעט מאז תחילת פרוייקט הOWASP מאבדת מיוקרתה לראשונה ויורדת למקום השלישי והמכובד, כאשר מי שב2017 סווגה כA07, פגיעות הXSS (ר"ת של Cross Site Scripting, הזרקת סקריפטים) מאבדת את הקטגוריה הנפרדת שהייתה לה ונכללת גם היא בתוך קטגוריית הInjection שתעסוק למעשה בכל צורות ההזרקה: החל מהזרקת קוד למסדי נתונים, הזרקת פקודות לחלוני דיאגנוסטיקה ועד להזרקת סקריפטים לקוד הJavaScript באתר. הפגיעות המזוהה ביותר עם קטגוריה זו היא כמובן SQL Injection שמדברת על הזרקת שאילתות SQL לתוך שדות הקלט באתר בשל מחסור בסנטציה נכונה של אותן שדות, כאשר גם מחסור בולידציה מספקת של הנתונים (לדוגמא, היכולת להכניס לשדה Email מספר טלפון בשל-כך שלא נעשה אימות גם בצד השרת למידע שמגיע, אלא רק בצד-הלקוח) נכלל בקטגוריה זו.
A04 – Insecure Design
עוד אורחת חדשה בOWASP TOP 10 2021 (ובאיחור ניכר צריך לציין), היא הפגיעות Insecure Design שמדברת על החשיבות בתהליכי פיתוח מאובטחים ומסודרים. קטגוריה זו מדברת על החשיבות בניהול שגיאות ומקרי קצה בקוד בצורה מיטבית, באחסון credentials בצורה מאובטחת, בניהול הקוד בצורה מאובטחת וע"פ תהליכי עבודה מאובטחים, מבוקרים וקבועים ע"פ מתודולוגיה סדורה ותיעוד מלא. בשונה משאר הפגיעויות שמדברות יותר על פגיעויות ביישום, היא מדברת על התכנון של הקוד ומנסה להשריש את החשיבות בחשיבה עם דגש לאבטחת מידע עוד בשלב האפיון והתמחור של הפרוייקט.
A05 – Security Misconfiguration
הפגיעות שהייתה מדורגת ב2017 במקום השישי עולה מקום אחד למעלה, לA05 ומקבלת לחיקה את הפגיעות הXXE (ר"ת של XML External Entites, הגדרה לא נכונה של מסמכי הDTD במערכת שאפשרו את מימושה של פגיעות הPath Traversal) שב2017 דורגה כA04. קטגוריה זו מדברת על מימוש וקנפוג לא נכון של ההגדרות במערכת, לדוגמא, כאשר ישנם פורטים מיותרים שפתוחים, ישנם דפים מיותרים שפתוחים לגישה לכלל המשתמשים, משתמשים יכולים להשאיר את סיסמאות ברירת המחדל או להגדיר סיסמאות חלשות, ההגדרות במסדי הנתונים ובספריות השונות לא מוקשחות ולא מתבצע עדכון-תכוף של הספריות והתוספים שבשימוש במערכת וכו' וכו'. גם טיפול לא-נכון בשגיאות שמאפשר למשתמש לבצע שאילתות שיגרמו לכך שיוצגו לו שגיאות (שגיאות הן מידע שיכול לחשוף מידע רב על הלוגיקה של המערכת) נכלל בתוך קטגוריה זו (קטגוריה זו מדברת על קיומן של שגיאות בפועל ולא על ניהול קוד ללא מודעות לניהול-שגיאות כמו קטגוריית הInsecure Design).
A06 – Vulnerable and Outdated Components
הפגיעות Components with Known Vulnerabilities שסווגה ב2017 במקום התשיעי, מקבלת גם שם חדש וגם מקום חדש ועולה למקום השישי. פגיעות זו מדברת על שימוש בשרתים, טכנולוגיות, תוספים וספריות בעלי פגיעויות ידועות, כאשר לרוב יהיה מדובר בגרסאות ישנות של אותם טכנולוגיות שנמצאות במערכות אך אין מודעות לכך שהן שם / יש מודעות, אך אין יכולת להחליף אותן בשל בעיות של תאימות לאחור.
A07 – Identification and Authentication Failures
עוד פגיעות שזוכה לירידה תלולה ב2021 היא Broken Authentication שגם זוכה לשם חדש (Identification and Authentication Failures) וגם יורדת מA2 לA7. פגיעות זו מדברת על תהליכי אימות לא נכונים במערכת, כגון Parameter Tampering (אימות משתמשים ע"פ הID שעובר גם בצד הלקוח וניתן להשפעה, פגיעות עליה דיברנו גם כחלק מBroken Access Control), ניהול לא נכון של SESSIONID (כאשר אינו אקראי מספיק, כאשר הוא חוזר על עצמו או כאשר ישנו ליקוי של Session Fixation וניתן להשפיע על מזהה המשתמש מהURL), ניתן להגדיר סיסמאות לא חזקות דיו או לבצע מתקפות Bruthe-Force (פגיעויות שנכללות גם בSecurity Misconfigration), נעשה שימוש בCaptcha שניתנת לשבירה והדרישות במקרים כמו 'שכחתי את הסיסמא' ניתנות לחיזוי ולשבירה וכן הלאה.
A08 – Software and Data Integrity Failures
עוד קטגוריה חדשה שמצטרפת לOWASP TOP 10 2021 היא עוד קטגוריה ששמה את הדגש על פיתוח מאובטח ועוסקת בשימוש בתוספים, ספריות קוד ומודולים ממקורות לא מהימנים שמאפשרים לתוקפים להשיג אחיזה במערכת בצורה קלה יחסית. כמו-כן, עוסקת הקטגוריה בהגדרת עדכונים אוטומטיים לאותן ספריות ומודולים, מה שמאפשר לתוקפים להחדיר בעדכון מאוחר יותר נוזקה למערכת, על-אף שבעת התקנת הספרייה היא עברה סקירה ונמצאה מהימנה.
A09 – Security Logging and Monitoring Failures
הפגיעות שהייתה מוכרת בOWASP TOP 10 2017 כInsufficient Logging & Monitoring עולה מקום אחד למקום התשיעי ומקבלת שם חדש. קטגוריה זו מדברת על החשיבות רישום של כל התהליכים והפעילויות במערכת וביצוע ניטור ומעקב עליהן באופן קבוע. כמו-כן, היא מדברת על חשיבות בסינון המידע שנשמר בלוגים ואי שמירת מידע רגיש. מלבד-זאת, ישנה חשיבות לוודא שכל מערכות ההגנה והבקרה במערכת פועלים כראוי ומעבירים התראות במידת הצורך.
A10 – Server-Side Request Forgery
למרות שהיא לא נחשבת לפופולארית מידי, האורחת המפתיעה של OWASP TOP 10 2021 היא פגיעות הSSRF (ר"ת של Server-Side Request Forgery, פגיעות שעוסקת בגישה למערכות פנימיות בארגון דרך מערכת הWEB שלנו). פגיעות זו נכנסה לראשונה לOWASP TOP 10 2021 בעיקר בשל העובדה שיש כלפיה חוסר מודעות והפופולאריות ההולכת וגודלת של שירותי ענן שגורמת לכך שנוכל למצוא לא-פעם ולא-פעמיים ייבוא של משאבים חיצוניים לתוך האתר. אם אין ולידציה מספקת לאותן נתונים, תוקף יכול לשנות את אותן משאבים לכתובות פנימיות שרק לשרת יש גישה אליהן בשל העובדה שהוא מקושר לאותן רשתות ולגשת למערכות הפנימיות בארגון.
סיכום ההבדלים בין OWASP TOP 10 2017 לOWASP TOP 10 2021:
מלבד שינויי המיקומים המשמעותיים (כמו ירידתה של Injection למקום השלישי ועלייתה של Broken Access Control למקום הראשון), שמה של הקטגוריה Sensitive Data Exposure הוחלף לCryptographic Failures ובהתאם ניתן בה יותר דגש לשימוש בפרוטוקולי הצפנה וגיבוב מאובטחים ומוכרים, שמה של הקטגוריה Broken Authentication הוחלף לIdentification and Authentication Failures ושמה של הקטגוריה Insufficient Logging & Monitoring הוחלף לSecurity Logging and Monitoring Failures.
כמו-כן, שלוש קטגוריות חדשות נוספו ודחקו החוצה שלוש אחרות: Insecure Design, Server Side Request Forgery וSoftware and Data Integrity Failures שמחליפות את פגיעות הXSS המיתולוגית (Cross Site Scripting) שכעת הופכת להיות חלק מInjection, את פגיעות הXML External Entity (מוכרת כXXE) שכעת הופכת להיות חלק מSecurity Misconfiguration ואת פגיעות הInsecure Deserialization שכעת הופכת להיות חלק מהקטגוריה החדשה שנכנסה לA08, הלא היא Software and Data Integrity Failures.