-7h3r3 15 n0 5p00n- OWASP API Top 10 מאת יונתן קריינר הקדמה במהלך השנים, האינטרנט השתנה, והוביל אותנו לשנות את דרכי הבנייה, ההתקפה וההגנה עליו. המעבר

מסמכים קשורים
קורס בדיקות חוסן ופיתוח מאובטח 155 שעות

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

Microsoft Word - Ass1Bgu2019b_java docx

- גרסת חורף 18' של Salesforce 10 חידושים בענן המכירות גרסת חורף 18' כבר כאן, ולפני שנסקור את השיפורים בגרסה זו, הכנו לכם חידה: ב- Webinar שעשינו בגרסה

(Microsoft Word - SQL\353\351\345\345\365 \341\361\351\361 \360\372\345\360\351\355 \ doc)

פקולטה: מחלקה: שם הקורס: קוד הקורס: מדעי הטבע מדעי המחשב ומתמטיקה מתמטיקה בדידה תאריך בחינה: _ 07/07/2015 משך הבחינה: 3 שעות סמ' _ב' מועד

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

DCA & A/B Testing

Office 365 ProPlus בחינם לסטודנטים באוניברסיטת בן גוריון בנגב הוראות סטודנטים באוניברסיטת בן גוריון בנגב יכולים להוריד ולהתקין את חבילת התוכנה Office

הגנה - שקפי תרגול

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

תכנות מונחה עצמים א' – תש"ע

תוכן העניינים

HTML - Hipper Text Makeup Language

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

התגוננות בפני כוחות האופל

פייתון

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

מדריך להתחלה מהירה Microsoft Project 2013 נראה שונה מגירסאות קודמות, ולכן יצרנו מדריך זה כדי לעזור לך ללמוד להכיר אותו. סרגל הכלים לגישה מהירה התאם אי

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

PowerPoint Presentation

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

סדנת תכנות ב C/C++

People. Partnership. Trust מסלול Free פורטל החינוך מבית U-BTech מסלולים ומחירים חיבור לשירותי Office 365 ללא עלות פורטל התחברות הכולל ממשק למנב"ס ולסי

Titre du document en police Sodexo

מבוא למדעי המחשב

תוכן העניינים

שאלהIgal : מערכים דו מימדיים רקורסיה:

מהוא לתכנות ב- JAVA מעבדה 3

People. Partnership. Trust שלבי הפרויקט והמסלולים השונים - פלטפורמת "קהילה לומדת" מסלול Free שלבי הפרויקט: חיבור לשירותי Office 365 ללא עלות פורטל התח

מצגת של PowerPoint

PowerPoint Presentation

מבחן בפיתוח מערכות תוכנה בשפת Java ( )

מבוא לתכנות ב- JAVA תרגול 11

שאלהIgal : מערכים דו מימדיים רקורסיה:

שואב אבק רובוטי XIAOMI דגם - Vacuum Mi Robot מק"ט ספק 8223 תכנון מסלול חכם שאיבה חזקה שליטה חכמה ע"י Wi-Fi מרחוק בעל 21 חיישנים למיפוי מושלם של הבית צ

<4D F736F F D20FAE5F1F4FA20ECE7E5E5FA20E3F2FA20ECE2E1E920E3E9F1F720FAEEE5F0E5FA20E6E9F8FA20E4F8F6E72E646F63>

מערכות הפעלה קורס מס'

6 סיבות מדוע הכרחי לקחת אחריות על גיבוי ה Office חשיפת סיבות קריטיות מדוע ארגונים זקוקים לגיבוי נתוני ה Office 365 -

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט

שיעור מס' 6 – סבולות ואפיצויות

Microsoft Word - Sol_Moedb10-1-2,4

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

<4D F736F F D20F4FAF8E5EF20EEE5F2E320E020F1EEF1E8F820E120FAF9F2E3>

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

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

יצוא לחשבשבת תוכן עיניינים הגדרות - חשבונות בנק...2 הגדרות - הגדרות חשבשבת... 3 הגדרות - כרטיסי אשראי... 4 הגדרות - סוגי הכנסה... 5 יצוא לחשבשבת...6 י

מכללת הדסה, הפקולטה למדעי המחשב מבוא לתכנות מונחה עצמים והנדסת תוכנה סמסטר א', תשע"ו תרגיל 2 תאריך אחרון להגשה: קמפוס הנביאים יום א', 29/11/2015 בשעה

תוכנית לימודים להתמחות תכנון ותכנות מערכות הגנת סייבר

עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה אפריל 5105 קשה בלימודים, קל במבחנים, קל בחיים עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה יש לפתור את כל השאלות

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

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

2019 שאלות מומלצות לתרגול מס' דיפרנציאביליות של פונקציה סקלרית )המשך(. כלל השרשרת. S = ( x, y, z) z = x + 3y על המשטח מצאו נקודה בה מישור משיק

Slide 1

Slide 1

1 בחירת מנועי חיפוש באינטרנט תוצאות החיפושים באינטרנט, תלויות בבחירת מנוע חיפוש מתאים. אמנם גוגל הוא המנוע המוכר ביותר, ובכ"ז, לעתים השימוש במנוע אחר,

תיק משימטיקה מגרף הנגזרת לגרף הפונקציה להנגשה פרטנית נא לפנות: כל הזכויות שמורות

ex1-bash

כנס הסברה בנושא ההוסטל

גילוי דעת 74.doc

מדריך למרצים ומתרגלים 1

מצגת של PowerPoint

Homework Dry 3

שאלה 2. תכנות ב - CShell

תרגיל בית מספר 1#

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

<4D F736F F D20FAF8E2E5EC20E0ECE2E1F8E420EEF2E5F8E D F9E0ECE5FA2E646F63>

ייבוא וייצוא של קבצי אקסל וטקסט

<4D F736F F D20F2E1E5E3E420EEE7E5E9E1E5FA20E0E9F9E9FA2E646F63>

פרויקט "רמזור" של קרן אביטל בס "ד מערך שיעור בנושא: "פונקציה" טליה קיפניס והדסה ערמי, מאולפנת צביה פרטים מקדימים על מערך השיעור: השיעור מהווה מבוא לנו

Cloud Governance הכלי למזעור סיכונים ומקסום התועלת העסקית

מבוא למדעי המחשב

חינוך לשוני הוראת קריאה: נקודת מבט של הערכה: מהן הסוגיות שבהן ידע מחקרי עשוי לסייע בעיצוב מדיניות ועשייה?

PowerPoint Presentation

PRESENTATION NAME

" תלמידים מלמדים תלמידים."

PowerPoint Presentation

PowerPoint Presentation

Microsoft Word B

שאלהIgal : מערכים דו מימדיים רקורסיה:

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

תרגול מס' 1

מבוא לתכנות ב- JAVA תרגול 7

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

Slide 1

PowerPoint Presentation

Microsoft Word - solutions.doc

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

ארסמוס+ עדכון

Microsoft Word IG Lab - Configure Wireless Router in Windows Vista.docx

תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש

Real Time College Course: Networking Duration: 90 Hours Hands-On-Training

Microsoft PowerPoint - meli-iso.ppt

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

أكاديمية القاسمي كلية أكاديمية للتربية אקדמיית אלקאסמי מכללה אקדמית לחינוך שאלון מוטיבציה פנימית סטופ-הראל, 2002

הכנס השנתי של המכון לחקר הגורם האנושי לתאונות דרכים

תמליל:

-7h3r3 15 n0 5p00n- מאת יונתן קריינר הקדמה במהלך השנים, האינטרנט השתנה, והוביל אותנו לשנות את דרכי הבנייה, ההתקפה וההגנה עליו. המעבר ל API- עם הזמן, המחשבים הביתיים והדפדפנים התחזקו, כך שאין בעיה להעמיס על הלקוח קצת יותר, ופורמט,Single Page Application או,SPA הפך לנפוץ יותר. הסטנדרטים של עיצוב וביצועים עלו (לרענן את העמוד? לא תודה, אנחנו ב.)0202- באתרי SPA בניגוד ל,multi page- הלקוח מסתמך על תשאול השרת בזמן הריצה במקום החזרת קבצי,HTML ו API- זה הפתרון המושלם. ל API- יש יתרונות חשובים : אפשר להשתמש בסוגים שונים של לקוחות ( Desktop,Mobile,Web ועוד) עם שרת אחד בלבד. הממשק מייצר הפרדה מוחלטת בין הלקוח לבין השרת, כך שהרבה יותר קל להחליף טכנולוגיית צד לקוח או צד שרת (בדומה למודל השכבות בפיתוח).,OWASP ארגון ללא מטרות רווח, שהביא לנו את רשימת Top 10 החולשות ב,Web- הוציא רשימה עדכנית יותר על ידי שני חוקרי האבטחה הישראלים ( ) ינון שקדי וארז ילון, כדי להתמודד עם תוואי השטח החדש הזה OWASP. הבינו דבר חשוב : עולם ה Web- הנוכחי והחולשות הרלוונטיות השתנו בשנים האחרונות. החולשות ששימשו אותנו כבודקי חדירות, ומהן ניסינו להתגונן כמפתחי אתרים הפכו, לפחות שמישות. https://owasp.org/www-project-api-security

רלוונטיות החולשות משתנה Sqli כמות החורים שניתן לנצל על ידי המצליחים, ומודלי ה- ORM NoSql עם כניסת השיטה של - Sqli צומצמו משמעותית. - XSS הפך לבעיה לטיפול צד הלקוח. פעם היה זה תפקיד השרת לשלוח פלט HTML -י תקין ונקי מסקריפטים, אך בעידן ה- API, השרת לא מחזיר יותר,HTML אלא JSON וזה כבר לא תפקידו לבצע.HTML encoding ספריות הלקוח הרבות כבר מכילות רינדור מאובטח כברירת מחדל, ואם בכל זאת תרצה להכניס קלט HTML תצטרך להשתמש בפונקציה בסגנון.)React( dangerouslysetinnerhtml - Path Traversal בעולם ה- Cloud, ירד השימוש בקבצים על השרת ועלה השימוש ב- object,storage בו הקבצים שאנו מעלים נפרדים מקוד המערכת והקבצים הרגישים שלנו כמו סיסמאות או מפתחות. בדרך כלל ניגשים אל האובייקט שלנו עם GUID ולפעמים תיקיות הן לא דבר רלוונטי. גם כאשר יש חולשת traversal בדרך כלל ההשלכות יהיו פחות חמורות. - CSRF פחת משמעותית בזכות הגישה של stateless API ומימושים כמו Tokens, Authorization http עם הדגל XSS להגן מפני כדי לציין שיש חברות שעדיין משתמשות ב- cookies )חשוב.headers.)local storage דבר שלא קיים עבור only עוד בעיה שהתמעטה עד כמעט היעלמות. עולם ה- Cloud - Classic Security Misconfigurations מספק לנו שירותי PaaS אשר מנוהלים על ידי החברות הגדולות והחזקות ביותר, והן מבטיחות לנו ניהול של השרת שלנו בצורה ככל הנראה טובה יותר משנוכל לבצע בעצמנו..Cloud based ו- services Microservices המצב היום עידן האינטרנט החדש מכיל מתודולוגיות שונות וחכמות כמו עלינו להתאים גם את מתודולוגיית ההתקפה והגנה שלנו אליו. הבסיס של כל הדבר הזה הוא ה- API, הסכנות והאפשרויות שהוא מייצר לנו. העולם מסתמך על הטכנולוגיה הזאת ואנחנו צריכים להבין את 2 OWASP API Top 10 www.digitalwhisper.co.il גליון 121, ספטמבר 2020

A1: BOLA החולשה שהגיעה למקום הראשון והמכובד של הרשימה היא BOLA - Broken Object Level,Authorization או כמו שאפשר להתייחס אליה בכבוד הראוי לה.the new Sqli, ( BOLA או IDOR לשעבר) מתארת לנו את המצב בו מנגנון הרשאות על אובייקטים במערכות מוטמע בצורה לא טובה (או לא מוטמע בכלל.)... הרשאות זה דבר מסובך וקשה, ולכן זה מקום מאוד פשוט ליפול בו. ראינו חברות גדולות ומרשימות שכבר נפלו לחולשה זאת פעם אחר פעם כמו Verizon,Uber ועוד : BOLA יכולה להתרחש על פי user id ועל פי.object id בבקשות על פי user id קל יותר להטמיע את ההגנה ולבדוק שהאובייקט אכן שייך למשתמש. נבדוק אם המשתמש שהזדהה הוא אותו משתמש אליו הבקשה מיועדת : הבעיה נהיית קשה יותר כשמדובר על object id. ניהול הרשאות, כמו שאמרתי, הוא דבר מסובך. יש הרבה מודלים שנוצרו בשביל להתמודד עם זה, ביניהם...ABAC,RBAC,DAC,ACL תוקף יכול לשנות את ה object id- לאחד אחר, ואם אין מנגנון הרשאות מספק - הוא יכול לקבל את המידע על סמך האובייקט הזה (. בדוגמה מעלה, התוקף ניגש לנסיעה 02 השייכת ליוזר אחר). בשביל למנוע את המתקפה כמו שצריך, עלינו לממש מנגנון חכם שעונה על השאלה " : האם משתמש x רשאי לבצע y על אובייקט "?z ולהטמיע את המנגנון בכל API endpoint שלנו. 3

טיפים לבודק חדירות : מזהים ב url- נוטים להיות פחות פגיעים, נסו לחפש מזהים ב HTTP headers- או.body GUID זה לא הגנה מוחלטת מ,BOLA- אבל בשביל לחסוך את הניחושים, השתמשו בשני משתמשים שונים ושלחו בקשה לאובייקט של משתמש אחד עם מחרוזת התאמתות של המשתמש השני. להשיג GUID זה לא טריוויאלי אבל עוד מעט נגיע ל A3- אם יש מזהה מספרי, זה הזמן ל,brute force- תכינו script שירוץ על המספרים. A2: Broken Authentication מימוש שגוי של הזדהות מתחלק ל :0- - Lack of Protection בדרך כלל נגן על כל הממשק שלנו בעזרת מנגנונים למניעת DoS ו,rate limiting- אבל בממשק המטפל בהזדהות, הפתרונות הללו לא מספקים. ההגנה צריכה להיות הרבה יותר קשוחה. endpoints מסוג זה צריכים לקבל יחס מיוחד ושכבת הגנה נוספת (לא במקום). כמה דוגמאות FA0,Credential stuffing protection,captcha,account lockout : ForgotPassword Rate Limiting ) (A4 Extra Protection Login MobileLogin API UpdateLocation EditPhoto - Misimplementation בעיה נפוצה מאז ומתמיד, היא מימוש לא נכון של מנגנוני הגנה. היא נובעת לא פעם מפיתוח שלא מוכוון לאבטחה, מחוסר ידע או הבנה של איך מנגנוני הזדהות מסוימים עובדים. בעיות לדוגמה של טעויות מימוש :.1 תמיכה של JWT באלגוריתם none.2 חוסר וידוא של ה Oauth provider-.3 אחסון סיסמאות plain text במקום עם hash + salt.4 שימוש באלגוריתמי הצפנה חלשים 4

A3: Excessive Data Exposure מערכות שאוהבות לחשוף מידע וחולשות כמו זו היו לנו תמיד, אך Excessive Data Exposure מתמקד בחשיפת מידע ספציפית דרך האובייקטים המוחזרים ב API- שלנו שאין בהם שימוש בצד הלקוח. החולשה נובעת מהחזרת מידע רגיש שלא מוצג אצל הלקוח, אבל עדיין מוחזר. שדה ששמור ב DB- על האובייקט אבל לא נרצה שיגיע למשתמש. זה נפוץ מ 0- סיבות :.1 נחזיר למקרה שנשתמש בעתיד.2 קל יותר במצב הראשון, מפתחים רבים חוטאים לגישה של, אולי בעתיד יהיה שימוש במידע מסוים, ולכן עדיף לייצר RESTfull API שיודע להתמודד עם כל מצב ולהחזיר את כל המידע. ככה, כל שינוי שיידרש בחיי האפליקציה יתבצע רק בצד הלקוח ולא ידרוש פיתוח בשני הצדדים. כמובן שזה בא על חשבון האבטחה, שאומרת עדיף לצמצם את התכולות למינימום הנדרש. זה יכול לקרות גם במצבים שיש צוותי backend וצוותי,frontend ויש חוסר תיאום בין הדרישות של צוות הלקוח מהשרת. הסיבה השנייה נובעת מעצלנותינו הטבעית כמפתחים; הרבה יותר קל להשתמש ב tojson)(- כזה או אחר ולהחזיר את האובייקט שקיבלתי מה,DB- מאשר להוסיף כמה שורות של סינון מידע. 5

A4: Lack of Resources & Rate Limiting.Brute Force DoS API עלינו להטמיע הגנות על כל חשוף שיש לנו במטרה למנוע ומתקפות לימיטים צריכים להיות על כל משאב סופי )תקשורת,,CPU זכרון, אחסון(. דוגמה קלאסית היא בהינתן endpoint להעלאת קובץ. אפשר להעלות קובץ מאוד גדול מה שיכול להעמיס גם על התקשורת וגם על האחסון של השרת. אבל באנו לדבר על,API הוא מספק לנו דרכים מעניינות חדשות לנצל משאבים. תחשבו על עמוד המציג פוסטים של בלוג עם ה- endpoint הבא: /api/posts?page=1&limit=100 אפשר לשנות את הפרמטר limit ל- 022,222 ואם אין בדיקה בשרת נוכל להעמיס עליו בקלות. טיפים למפתח: Docker יכול לעזור לנו מאוד בהגבלת משאבים חשוב להגביל כמה פניות משתמש יכול לעשות ל- API הקציבו מינימום ומקסימום לפרמטרים נומריים בשרת 6 OWASP API Top 10 www.digitalwhisper.co.il גליון 121, ספטמבר 2020

A5: BFLA החולשה,BFLA - Broken Function Level Authorization היא כמו האחות הקטנה של.BOLA במקום לשכוח לוודא את ההרשאות על האובייקט, החולשה הזו מתייחסת לבדיקת ההרשאות ל API- endpoints השונים. בין אם וידוא ברמת api שלם Controller, או אפילו פונקציה ספציפית. ברגע שלא מממשים את מנגנון ההרשאות הפנימי של האפליקציה שלנו (או מממשים אותו לא נכון) אנחנו חשופים ל.BFLA- BFLA תמיד היתה כאן, גם באתר ישן היו קונספטים של ניהול הרשאות ומפתח האתר יכול היה לשכוח לוודא את ההרשאות על הפונקציה,delete user אז למה לתת לזה התייחסות גדולה כל כך ולהזכיר את זה שוב? כי ב API- הרבה יותר קל לנצל את החולשה הזו. כשהיה לנו אתר,ASP.NET עמוד שמחזיר מוצר היה יכול בנתיב הבא : products.aspx?productid=123 ופעולת מחיקת המוצר יכולה להיות בכלל בנתיב : manage_products.aspx?action=delete&productid=123 מאוד קשה לחיזוי. ב API- המצב פשוט יותר, אם קיבלנו את המוצר על ידי הבקשה : GET /api/products/123 סביר להניח שבשביל למחוק מוצר פשוט נעשה : DELETE /api/products/123 הרשאות אפשר לממש במקומות רבים : בקוד, בקונפיגורציה, ב,API gateway- ובמקרים רבים החוקים שנגדיר יכולים להיות סותרים בין המקומות, מורכבים ונעשה טעויות או שפשוט נשכח לממש. 7

A6: Mass Assignment כל מי שמכיר אותי יעיד שאני מאמין גדול בעצלנות, וחושב שהיא תכונה חשובה אצל מפתחים. היא תורמת ליעילות בפיתוח כמו אי חזרה על קוד, עוזרת להתמקד רק במה שחשוב ומייצר ערך. הבעיה שלפעמים עצלנות של מפתחים מייצרת כשלים אבטחתיים, ו Mass Assignment- היא חולשה מושלמת להדגמת התופעה הזו. אם BFLA היא האחות של,BOLA אז Mass assignment היא האחות של.Excessive data exposure ניקח לדוגמה API שאחראי על הזדהות המשתמשים, ובפרט על פונקציית ההרשמה. נניח שהיא בפורמט הבא של בקשת POST לנתיב,/users ואליה נשלח json המכיל את פרטי המשתמש החדש שאנחנו רוצים ליצור. הדרך הפשוטה והמהירה ביותר לפיתוח פונקציה כזאת היא לזרוק את ה json- שקיבלנו ל constructor- של המחלקה,User ולהעביר את האובייקט שיצרנו לתוך הפונקציה שמכניסה ל ( DB- איזה כיף שיש לנו ORM נכון?). במצב כזה, גם אם ציפינו רק לפרטים שם משתמש וסיסמה, וגם אם זה מה שה UI - שלנו שולח, משתמש זדוני יכול לשלוח פרמטרים נוספים עם הבקשה, הם יועברו ל constructor- ובסופו של דבר אל ה DB- שלנו וכך משתמש יכול לדוגמה להוסיף פרמטר ולהפוך עצמו ל.admin- טיפ לבודק חדירות : במקום להתחיל לנחש פרמטרים שיכולים להיות שדות במחלקה, נצלו את האופי הצפוי והברור של API ומצאו GET endpoint שיחזיר לכם אותם. 8

A7: Security Misconfiguration על חולשה מספר 7 אתם יכולים לחשוב כדלי מלא בחולשות קונפיגורציה קלאסיות כמו הצפנה חלשה, קונפיגורצית same origin policy לא נכונה, שגיאות מפורטות ללקוח וכו' שגיאות קונפיגורציה יכולות לקרות כשמפתח לא מכיר לעומק נושא שהוא מממש ויכולות להיות לו השלכות אבטחתיות. יכולות לקרות מחוסר תשומת לב, או אפילו משימוש ב- dependency שמכילה חולשה בעצמה. בשביל להיזהר עם שימוש בתלויות יש פרוייקטים כמו dependabot שנכנס עכשיו ל- GitHub בצורה מלאה ויעזור לנו לסרוק תלויות בפרוייקט שלנו. יש גם פרוייקטים ספציפיים לשפות, כמו node security project שנכנס ל- npm ואנחנו יכולים לסרוק את התלויות שלנו באמצעות.npm-audit ההמלצות פה בעיקר הן keep up to date בעזרת כלים לסריקת חולשות שיוצאות, תבינו טוב את ה- API של הספריות שאתם משתמשים בהן )אפילו תקראו קצת על האבטחה שלהן, זה לא מזיק( ושימו לב ל- best practices כשאתם מתמודדים עם משהו חדש. טיפים למפתח: keep up to date שימו משימה שחוזרת על עצמה, לבדוק את הקונפיגורציות ולהקשיח אותן. עקרון המינימום הנדרש, תהיו כמה שיותר ספציפיים, השתדלו להשתמש בספריות שמספקות את הצרכים שלכם אבל לא יותר מהצרכים שלכם. 9 OWASP API Top 10 www.digitalwhisper.co.il גליון 121, ספטמבר 2020

A8: Injection בפרויקט החדש הוחלט לאחד את חולשות ההזרקה ביחד, הכוונה פה היא ל- SQL injection, command injection וכל חולשה הכוללת התערבות בשפה כלשהי עם קלט הלקוח. מה עם?XSS נקודה חשובה לציון היא שהפרויקט הפסיק להתייחס ל- XSS כחולשת צד שרת. XSS מתחלק כמו שאנחנו מכירים ל- reflected, dom based,stored קיבל תפנית חדה בפרויקט החדש. מקרים של reflected ו- stored היו נחשבים לחולשות צד שרת, השרת היה אחראי על התיקון, הוא היה נדרש לבצע HTML encoding לפני שליחת המידע אל הלקוח. התפיסה השתנתה, API מחזיר JSON )או פורמט אחר( ולא,HTML הוא לא יודע מי הלקוח שפונה אליו ויכול להיות שזה לא אתר, לכן הלקוח הוא שצריך לדאוג לקידוד המידע. מ- 0 ל- 8?! הסיבה המרכזית ש- Injection הייתה החולשה במקום הראשון ב- top10 המקורי היא בגלל,SQL injection שהיתה חולשה מאוד נפוצה ומסוכנת. כמו שאמרנו, היא הפכה להיות הרבה פחות נפוצה )עם זאת עדיין מסוכנת( בגלל השימוש העולה ב- NoSql ו- ORM. חולשה נוספת מאוד מסוכנת היא shell injection שנשארה מאוד מסוכנת אבל אף פעם לא הייתה מאוד נפוצה. אני חושב שיש מספיק חומר על החולשות מסוג הזה באינטרנט אז לא אפרט עליהן יותר מידי. טיפים למפתח: - )וידוא תקינות הקלט בדרכו אל האפליקציה validation עבור כל קלט משתמש חשוב לבצע לחולשות כמו )sqli ו- sanitation )תקינות הפלט החוזר אל הלקוח - לחולשות כמו )XSS לתת יחס מיוחד לתווים מיוחדים, להשתמש ב- escaping המתאים לכל שפה. אל תסמכו על קלט ממקום חיצוני )לא רק הלקוח זדוני, גם מערכות חיצוניות ואולי אפילו ה- DB שלנו?( 01 OWASP API Top 10 www.digitalwhisper.co.il גליון 121, ספטמבר 2020

A9: Improper Assets Management אולי החולשה הכי משעממת, אבל כנראה הראשונה לטיפול בארגון : ניהול נכסים יכול להוות חולשה ב 0- מקרים. מקרה ראשון הוא חוסר בדוקומנטציה. כשיש לי API endpoint שאני לא מודע אליו כמו גרסה ישנה או פונקציה שנועדה רק למצב debug אבל מצאה את דרכה אל שרת ה production- שלנו, אנחנו בבעיה לא פחות חמורה משאר 9 החולשות. מקרה שני הוא שירות שלם שלא אמור להיות חשוף, אבל בגלל טעויות קונפיגורציה או טעויות אנוש, נחשף לעולם הזדוני שלנו ומהווה חור נוסף במערך ההגנה שלנו. ניהול נכסים תמיד מהווה בעיה כי אנחנו נוטים להתמקד בפיתוח ולא בתחזוקה, זה יותר כיף אבל זה לא תמיד יותר חשוב! בעולמות ה CI/CD- הכל זז מהר, ואנחנו צריכים לתעד ולדעת מה מצב האפליקציה שלנו בכל זמן נתון. יש חברות שנולדו מהנחת היסוד שחברות לא מכירות את הנכסים ברשת שלהן. ה "two cents"- שלי : אני מאמין שהחולשה הזאת בניגוד לשאר החולשות נובעת מהרגלים לא נכונים של צוותי הפיתוח. זו אחת החולשות היחידות שלא דורשת ידע טכנולוגי כדי להבין או לפתור אותה, ולכן לכאורה פשוט מאוד להימנע ממנה ובכל זאת כולנו חוטאים בה. הדוקומנטציה צריכה להיות חלק אינטגרלי מהפיתוח, כשמגדירים ( Definition of Done רשימת שמגדירה מתי feature מוכן), הוא צריך להכיל תיעוד כמו שהוא מכיל.unit tests לפעמים אנחנו ממעטים בהגנה על API המשמש לבדיקות או בגרסה ישנה, ולפעמים זו גם החלטה הגיונית. במצב כזה חשוב לשים לב שבסופו של דבר אנחנו מפרידים את המידע האמיתי, כל עוד אנחנו משתמשים במידע שנמצא בגרסת ה production- אנחנו מוכרחים לממש את אותה רמה של הגנה ולא להרשות לעצמנו לפחות. 00

A10: Insufficient Logging & Monitoring Logging היא הפעולה של שמירת מידע לצורך תחקור (לא רק אבטחתי, גם Google Analytics זה.)logging בעזרת לוגים אנחנו יכולים לברר מה גרם לפעולה מסויימת להתרחש (מה גרם למשתמש לקנות מוצר, או לשרת לזרוק שגיאה). הדבר השני בסל הכלים שלנו הוא,monitoring אנחנו מגדירים,metrics אוספים מידע בזמן אמת, וכשפרמטר מסוים חורג מהטווח התקין שהגדרנו אנחנו מקבלים התראה ויודעים מיד כשזה קורה (ויכולים לתחקר את זה עם הלוגים שלנו, יפה.) את הלוגים שלנו כדאי לכתוב בצורה כזו שעל כל אירוע משמעותי, יכילו כמה שיותר מידע. לא צריך לכתוב למסד שלנו כל פונקציה שהקוד עובר, אבל כשיש פונקציה חשובה נכתוב הכל על מי, למה וכמה הגיעו אליה (לדוגמה שגיאת הזדהות זה חשוב). לגבי ניטור, אתם צריכים למצוא את ה sweet spot- בכל מטריקה שלכם. תזכרו שאתם רוצים לדעת שעומד להיגמר לכם הזיכרון על השרת, אבל אתם לא רוצים להגיע למשרד כל פעם כשיש עומס קטן שלא באמת מהווה בעיה. אם הניטור מתריע יותר מידי הוא הופך ללא רלוונטי ואף אחד לא יתייחס אליו, לכן צריך להתריע רק על מה שבאמת חשוב כדי שכולם יקחו אותו ברצינות. כדאי להשתמש בפורמט לוגים סטנדרטי שכלי ניתוח וניהול יודעים לעבוד איתו, לייצר dashboards נוחים והתראות ברורות וקלות לתחזוקה. Log Injection צריך לשים לב שאנחנו מבטיחים את אמינות הלוגים שלנו, כל עוד הלוגים שלנו לא אמינים לא נוכל לתחקר בעיות. אם הלוגים שלנו נכתבים לקובץ בצורה הבאה : כדאי לשים לב איך אנחנו פותרים את המקרה של הקלט הבא : -123%0aINFO:+attacker+logged+out מה שיכול ליצור את הקובץ הבא : INFO: failed to get product -123 INFO: attacker logged out 02

לסיכום כן האינטרנט השתנה, ואנחנו צריכים להשתנות יחד איתו... חולשות שהיו רלוונטיות לפני שנים, כבר פחות רלוונטיות היום. OWASP השכילו להכיר בכך, ויצרו את פרוייקט API Security על מנת לגרום גם לנו להבין את גודל הבשורה. אני בטוח שזו לא הפעם האחרונה בקריירה שלנו שנצטרך לעשות הגדרה מחודשת של ההסתכלות שלנו על התחום. בעולם החדש, המנצח לאו דווקא יהיה בעל הניסיון הרב ביותר, אלא זה שיכול ללמוד ולהשתנות במהירות וביעילות. על המחבר יונתן קריינר, בן 03, מתעסק בפיתוח Full Stack ו- Research Security לשאלות/הערות/טענות: yonatankreiner@gmail.com 03 OWASP API Top 10 www.digitalwhisper.co.il גליון 121, ספטמבר 2020