סיכום אבטחת מערכות תוכנה מתקדמות - PDF
Document Details
Uploaded by EverlastingGrossular
Ashkelon Academic College
Tags
Related
- PCSII Depression/Anxiety/Strong Emotions 2024 Document
- A Concise History of the World: A New World of Connections (1500-1800)
- Human Bio Test PDF
- Vertebrate Pest Management PDF
- Lg 5 International Environmental Laws, Treaties, Protocols, and Conventions
- Fármacos Anticoncepcionais e Disfunção Erétil PDF
Summary
סיכום אבטחת מערכות תוכנה מתקדמות - יחידה 1 - מבוא וסקירת הקורס (Introduction & Overview). נושאים כמו Knowledge Tier, חולשות במוצרי תוכנה (CVEs), פגיעות (Vulnerability), איומים (Threat), וכלים כמו Log4j, LDAP, ו-RCE.
Full Transcript
סיכום אבטחת מערכות תוכנה מתקדם יחידה - Introduction & Overview - 1מבוא וסקירת הקורס שיעור :1 שכבה - Knowledge Tier - of basic concepts in the world of i...
סיכום אבטחת מערכות תוכנה מתקדם יחידה - Introduction & Overview - 1מבוא וסקירת הקורס שיעור :1 שכבה - Knowledge Tier - of basic concepts in the world of information security 1 -CVEקטלוג של חולשות במוצרי תוכנה או רכיבי צד שלישי.מקוטלג באמצעות מס' סידורי ייחודי.שפה משותפת בכל העולם בנוגע לסוג החולשה ואופייה.יש מקום מרכזי שמרכז את כל עניין החולשות וה patchלתיקונים. - Vulnerabilityהחולשה עצמה (בתוכנה ,softwareבחומרה ,hardwareאו במערכות הפעלה). - Exploitחומרת החולשה כלומר כמה קל לנצל את החולשה לתקיפה משמעותית. -Threatאיום ,הקוד הזדוני שגורם לתקיפה ע"י ניצול החולשה. -DREADמודל שעוזר לנו להעריך את רמת הסיכון בחולשה מסויימת ועוזר לנו להעריך את רמת הנזק האפשרית ומה הסיכוי שהיא תקרה.ראינו בקורס הקודם בהרחבה. - Log4j / Log 4 Shellספריית צד שלישי של שימוש בלוגים.מיקרוסופט השתמשה בספרייה זו לצורך שימוש במשחק מיינקראפט.בספריה זו התגלתה חולשה קריטית שמאפשרת הזרקת קוד לתוכנה ,מה שאפשר להאקרים הנתקף. במחשב זדוני קוד ולהריץ זאת לנצל החולשה נוצלה ע"י שימוש ב Lightweight Directory Access Protocol - LDAPשזה בעצם אופציה שקיימת בשפת JAVAשל טעינת קטעי קוד והרצתם ממקור מרוחק Remote Code Execution - RCE. ההאקרים גרמו לשרת הנתקף להריץ את הקוד הזדוני שהם כתבו בצ'אט של המשחק ובכך גרמו נזק. שלבי ההתקפה: .1שליחת בקשה נגועה לשרת הנתקף ע"י ההאקר(.שליחת הודעה בצ'אט המכילה קוד זדוני). .2השרת שהיה אמור לכתוב ללוג את הבקשה כטקסט הריץ אותה כקוד ,וכיוון שהטקסט הכיל קוד של ,RCE השרת שולח בקשת טעינת קוד מרוחק ממקור זדוני. .3הקוד הזדוני נטען לשרת ומורץ על ידו ובכך מזיק לשרת. ) - Open SSL) Heartbleedפגיעות בספריה שמימשה את פרוטוקול .SSLאופן הפגיעות התבסס על בקשת בדיקה שהשרת אכן פעיל.בתהליך הלקוח שולח מילה ואת אורכה (אורך הבאפר) ,והשרת אמור לענות לו כתשובה את המילה שנשלחה.הפגיעות -אם המילה הייתה קצרה ,אך הצהרת אורך הבאפר הייתה גדולה מאורך המילה, השרת החזיר מילה באורך שהוצהר ולא באורך המקורי ,וע"י כך נחשף מידע רגיש שהיה רשום לו בזיכרון. - Secure Software Development Lifecycle - SSDLCתהליך פיתוח תוכנה מאובטחת שמשולב מתחילת הפיתוח ועד שלב הפצתה ותחזוקה. - SHIFT LEFTמושג חשוב שאומר ששילוב רכיבי האבטחה משולבים ומתוכננים מראש ,ולא נזכרים בהם בשלב מאוחר אשר מקשה על מימוש דרישות האבטחה כיאות.חשוב להדגיש שבכל שלב פיתוח מתעסקים גם באבטחת התוכנה ולא רק בפיתוח. 1 - Maintaining security Balanceנקודת האיזון בין האבטחה לבין הפונקציונליות והשימוש נוח באפליקציה. הסיבות לכתיבת קוד לא מאובטח: - Lack of Resources and Timeחוסר במשאבים וזמן -לחץ באספקת מוצר ללקוח ועמידה בדרישות המעסיק לטווח הקצר. - Lack of Educationחוסר מודעות. - Security and Development Silosהפרדה בצוותי הפיתוח ,קיימים צוותי פיתוח וקיימים צוותי אבטחה והם לא עובדים יחד. - Not Seeing Security as a Top Priorityגישה שאומרת" ,קודם נביא מוצר עובד ובסוף נדאג לאבטחה שלו"(.לא מומלץ בכלל ואף מסוכן). שכבה - Principles Tier - Understanding and grasping the principles of secure development2 - Consider Software Security as a Priority Right From The Start.1מחשבה על אבטחה כמרכיב משמעותי בשלבים ההתחלתיים של הפרויקט.ושימוש באוטומציות לצורך בדיקות אבטחה בשלבי הפיתוח השונים. - Defining Project’s Security Requirements.2הגדרת דרישות אבטחה. - Identify Potential Security Threats.3זיהוי פגיעויות ואיומים רלוונטים.חשוב לבדוק שיש לנו את הכלים לבחון את המערכת ולחפש את החולשות.צריך גם לשים לב שאנחנו מתקנים את החולשות שאנחנו מוצאים ולא מסתפקים רק לגלות אותם. - Have Secure Coding Guidelines and Standards.4קווי אבטחה מנחים כסטנדרט בפיתוח.חשוב להצמד לסטנדרטים מוכרים וידועים כגון OWASPאו NISTולא להמציא את הגלגל מההתחלה. - Use Up-To-Date Frameworks and Libraries.5שימוש בספריות עדכניות ,מוכרות ומתוחזקות בצורה נכונה.לבדוק שאכן הקהילה מאמינה בספריות האלה.יש גם ספריות אבטחה חשובות שכדאי ורצוי להשתמש בהם.בנוסף חשוב שיהיה גורם אשר מבקר את הקוד שנכנס לתוך הארגון. - Conduct Security Awareness Training.6אימון עובדים באבטחה והעלאת מודעות.פגישות בין העובדים ושיתוף במקרי אבטחה שכל אחד חשב עליהם. - Securing Access to Databases.7גישה מאובטחת לבסיסי הנתונים.למנוע גישה לא מורשית ומניעת דלף מידע של בסיס הנתונים. - Implement Digital User Identity.8זיהוי נכון של המשתמשים ובדיקת אישורי גישה. - Handle Errors and Exceptions in All Areas.9טיפול בשגיאות ותגובה נכונה בהתאם. - Monitor Security Information.10בקרה ומידע על רכיבי האבטחה.שימוש בלוגים לצורך בקרה ע"י מעקב אחריהם.הלוגים עוזרים לנו לתעד דברים חשובים שקורים במערכת שלנו. שיעור :2 שכבה - Risk Tier - Knowing the attack surface and possible threats3 - Information Securityהכרת משטח התקיפה ,יישום הגנות ,תרגול המתקפה והתמגנות ממנה.לדעת מה ההתקפות הרלוונטיות ביותר על הארגון שלנו ואיך ניתן למנוע אותם. 2 - Attack Vectorמשטח התקיפה ,הוא דרך הפעולה של התוקף ומה החולשה אותה הוא מנצל.חשוב להכיר את משטחי התקיפה ולמגן אותם.ככל שיש לנו יותר מידע על המערכת ועל הסיכונים האפשריים ,כך נוכל להגן על המערכת שלנו בצורה טובה ונכונה יותר. - OWASP top 10חשוב תמיד להכיר מה הם ההתקפות הכי נפוצות ,להתעדכן כל הזמן וללמוד עליהם.הרשימה הזו תמיד משתנה ,ולכן חשוב לעקוב. שכבה - Controls Tier - Knowing a wide spectrum of defense methods4 - Security Controlsבקרות אבטחה. - Input Validationבדיקת קלט ,לבדוק גם מצד לקוח וגם מצד השרת.חשוב מאוד לבדוק את הקלט שאנחנו מקבלים לשרת.כדאי לעשות - whitelistכלומר מה מותר (אם נאמר רק מה אסור ,יכול להיות שלא נשים לב שאנחנו מפספסים דברים).הדגש הוא לבדוק גם צד לקוח וגם צד שרת. - Authentication Controlsכדאי לשים יותר מרכיב אימות אחד ,ככל שיש יותר רכיבים המנגנון יותר חזק. ○ - KNOWמשהו שאני יודע. ○ - HAVEמשהו שיש לי. ○ - AREמשהו שהוא אני. ○ - WHEREהמקום שאני נמצא. אפשר להשתמש במנגנון כמו Kerberosאו SSOשבו :אחרי שבוצעה הזדהות אחת ,ניתן להשתמש במגוון שירותים בארגון ואף בארגונים אחרים ללא צורך בהזדהות נוספת. - Encryptionהצפנה סימטרית או אסימטרית ,שימוש באלגוריתמים יעודיים בהתאם לסוג המידע.צריך לדעת איך עושים את הפצת המפתחות וכו'. - Web Best Practicesהגנות אבטחה ברמת הרשת. ○ - HTTP Cookies Defended withשימוש בדגלי אבטחה כגון: HttpOnly = True Secure = True SameSite = Lax/Strict ○ - HTTP Security Headersלבדוק את הבקשה בהתאם ל Headerשלה ולקבוע חוקים מה אנחנו מוכנים לקבל. ○ - Referer validationחסימת גישה שאנחנו לא רוצים לקבל ,זה נמצא בתוך הבקשת ה HTTP הוא אומר מאיזה דומיין ומאיזה שרת הבקשה הגיעה. - HTTP Cookiesשימוש בעוגיות על מנת לשמור את הסשן IDשלנו.יש בזה גם משהו מסוכן ולכן חשוב לשמור על ה Cookiesבצורה טובה ולהשתמש בשיטות וספריות מתאימות. שכבה - Architecture Tier - Design secure solutions5 חשוב שנבנה ארכיטקטורה טובה ובטוחה. 3 - Information Securityבניית מערכת בצורה מאובטחת עוד משלב ההתחלה ולאורך כל שלבי הפיתוח כגוןDevSecOps :ו SDLC. - Security by Designאבטחה משלב הבנייה של המערכת. ○ - Defense in Depthהגנה בשכבות. ○ - Privacy by Designהתייחסות לפרטיות משלב תכנון המערכת ושימוש בהצפנה ומפתחות לצורך שמירה על מידע רגיש. ○ - Least privilege & Need to knowאבטחה באמצעות מניעת גישה ,כמה שפחות ורק מה שחייבים. ○ - Segregation of Duties, Dual Controlהפרדת רשויות ,לא לתת לאדם אחד לשלוט על הכל ,אלא לחלק את התהליך לכמה אנשים שונים. ○ - (Shared responsibility (Cloudאחריות שיתוף בענן. ○ - Secure by defaultsלאבטח הגדרות ברירת מחדל. ○ - (Fail security (vs Fail openלבחור מה קורה כאשר המערכת קורסת ,סגור או פתוח. ○ - keep it simple - KISSלשמור על פשטות הקוד והמערכת תוך שמירה על תפקוד מקסימלי. ○ - Trust but verifyמחלק את המשתמשים לקטגוריות ,ובהתאם לזה מבצעים בדיקות זהות על המשתמש. ○ - Zero trustלא לסמוך על אף אחד ,תמיד לבדוק זהות משתמש. Control types ○ - (Administrative (policies, proceduresבקרה אדמיניסטרטיבית (מנהלית). ○ - (Technical control (VPN, FW, Patchesהגנה טכנית באמצעות חומרה או תוכנה. ○ - (Physical controls (Door's lockבקרה פיזית כגון גדר. :Functionalities of security controlsסוגים של בקרות. ○ - (Preventive (FWמניעה. ○ - (Detective (IDSגילוי. ○ - (Corrective (fixing scriptsמתקנת. ○ - (Deterrent (light, warning signsהתראה. ○ - (Recovery (backupשחזור. ○ - (Compensating (statementבקרה מפצה. - Least privilegeגישת הרשאה לפי תפקיד. - Need to knowרק מה שאדם חייב לדעת ולא מעבר. - Now It’s the Human Mindכדאי לחשוב בראש של אבטחת מידע ,חשיבה של תוקפים וחשיבה מחוץ לקופסא.כלומר להיות תמיד בראש שצריך תוכנה מוגנת ומאובטחת. - Threat Modeling Methodologiesתמיד להיות shift leftכלומר תמיד להיות בבניית מוצר שהאבטחה באה שלב לפני הפיתוח ,וכן צריך לבצע בכל שלב את בדיקת האיומים האפשריים ולפעול על פיהם. 4 Overview Secure Coding Frameworks and Standards Standards and Awareness -NIST's Secure Software Development Framework - SSDFפרוטוקול של NIST להקמת תשתיות אבטחה בארגון נועד גם לאנשים לא טכנולוגים שיוכלו ליישם את הדברים בארגון. -OWASP’s Application Security Verification Standard - ASVSסטנדרטים לתוכנה מאובטחת מיועד למפתחים מבית .OWASP - The OWASP Top Ten Proactive Controlsהגנות אקטיביות של .OWASP DevSec in DevSecOps Culture - DevOps vs DevSecOpsשילוב אבטחה תוך כדי כל שלבי הפיתוח ,כמחזור מעגלי וקבוע. - Objectives and Topicsהכרת תהליכי פיתוח התוכנה ואיך משלבים בהם את האבטחה. Advanced API Threats and Secure Coding - OWASP Top 10 API Security Risksלהכיר את הסיכונים ב APIואיך להתמגן מהם. ה APIמאוד רווח היום ,ולכן כדאי לבנות מערכות עם ,APIוכן צריך גם להגן עליו. Advanced AI / LLM Threats and Secure Coding - OWASP Top 10 for LLMs Applicationsשישמוש במודלי .GEN AIצריך להכיר את האיומים הקיימים בנושא ,לדעת איך להתמגן מהם ולהבין מושגים שמשתמשים וקשורים ב .AI Advanced Deep Inspection for NGFWs and WAFs - Level of inspection for SPI, MPI and DPI in OSI modelמודלים נפוצים ומה מתפתח בתעשייה ,להבין לעמוק. [ לא בחומר של המבחן -להעשרה בלבד ] יחידה - Secure Coding Frameworks and Standards - 2סביבת קידוד מאובטחת וסטנדרטים שיעור :3 Adopt the NIST SSDF -סטנדרט ברור ומונגש (מבחינת ניסוח) לסביבה מאובטחת ,הכוללת תהליך שלם מפיתוח ועד הפצה " -קוד מאובטח לא מספיק כדי שהתוכנה שלנו תהיה בטוחה" ,עוזר לנו לא להמציא את הגלגל מחדש.נועד גם לאנשים לא טכנולוגים שיוכלו ליישם את הדברים בארגון. SSDF StructureSSDF Structure: - Prepare the organization - PO.1הכנת צוותי הפיתוח והארגון לפיתוח מאובטח. .1הכנת הארגון. 5 .2הגדרת דרישות אבטחה לפיתוח וגם לספריות צד 3שנצטרך לצרוך או לגורמים צד 3ששותפים לפיתוח. .3זיהוי אנשים מתאימים לצורך יישום הדרישות. .4יצירת תפקיד חדש של אחראי אבטחה (.)security champions .5לתת הכשרה לפיתוח מאובטח למפתחים ובעיקר ל .security champions .6מחויבות לפיתוח מאובטח -מהמתכנת הפשוט ועד למנהלים הבכירים שמעורבים בתהליך. .7אספקת כלים נדרשים -שילוב אוטומציות שימנעו טעויות ושיאכפו את כללי אבטחה. .8יצירת סביבות נפרדות לפיתוח ,בדיקה ו "העולם האמיתי". .9אבטחת מחשבי הקצה לפי הצורך. .10יצירת צ'ק ליסט או מבחנים לצורך מעבר ובדיקה שלא התפספס משהו ושהכל קשורה.וכמובן כדאי לתעד את תוצאות המבחנים. -Protect Software - PSהגנת כלל הרכיבים בתוכנה בצורה מובנית ומסודרת. .2 .1ניהול בקרת תצורה של הקוד ()GIT דלף מידע בעקבות העלאת סיסמה לבקרת תצורה. הכנסת קוד לא מעודכן או קוד שדרס תיקון באג. מחיקה בטעות של הקוד. מניעת מניפולציה לקוד. גישה לא מורשית. זליגה בין רפוזיטורי. מתקפת כופר. ספריות צד שלישי עם הרשאות מסוכנות. .2לנהל ארכיון גרסאות במקום נפרד מהקוד והתוצרים וכן קבצי הגדרות. .3לנהל הרשאות גישה גם לגישה בטעות וגם גישה זדונית. .4לספק אוטומציה של חסימת העלאה של מידע רגיש. .5אוטומציה שחוסמת העלאת קוד שובר שלמות ,לדוגמה לא מתקמפל. .6לתעד מי עשה ומה עשה. .7לייצר כלי שמוודא שהקוד לא עבר שינויים לדוגמה ע"י חתימה דיגיטלית של .HASH - Produce well secure software - PW.3יצירת גרסה מאובטחת בתהליך סדור. .1בכל שלבי התוכנה ,גרסת התוכנה ,צריכה לעמוד בדרישות האבטחה. .2הערכת סיכונים והתאמת רכיבי אבטחה בהתאם. .3להשתמש בקוד בטוח שכבר נכתב.בנוסף עלינו לעקוב על פרסומי הקהילה בענייני האבטחה של הקוד ולעדכן אם צריך. שיעור :4 - code review.4חשוב כדי לקבל מבט חיצוני שיכול לחשוף בעיות.זה כמו עוד עין נוספת שעוברת על הקוד שלנו ובודקת את תקינותו ואיכותו.הדגש כאן שזה צריך להיות בודק מהצד ,שבודק את הקוד בהתאם לדרישות שקיבלנו ,מטרתו לבדוק שאכן בוצע מה שנדרש. - Reuse Existing, Well-Secured Software.5שימוש בספריות שכבר נכתבו ונבדקו ,במקום ליצור הכל מחדש.זה חוסך הרבה באגים ופגיעויות ,אך עדיין חשוב להקפיד על דרישות האבטחה, כמו קוד חדש ולעקוב אחרי עדכוני אבטחה על הספריות האלו. 6 - Secure Coding Practices.6צריך ליצור לעצמנו פרקטיקה לקיום קוד מאובטח.להגדיר איך אנו צריכים לפעול.נביא כמה דוגמאות לפרקטיקות: ולידציה לקלט ו ENCODING אי שימוש בספריות לא בטוחות או שלא נבדקו מספיק. יצור לוגים ומעקב עליהם. שימוש בסביבה עם מערכות אוטומטיות לבדיקת הקוד. - Configure the Compilation, Interpreter.7קינפוג נכון של הקומפיילר אשר יתריע על בעיות אבטחה וכן עלינו לפעול על מנת לתקן את הקוד ע"פ ההמלצות(.להתייחס לאזהרות של הקומפיילר כמו שאנו מטפלים בשגיאות). - Review and/or Analyze Human.8בדיקות אנושיות ,אין תחליף לבדיקה האנושית ,יש דברים שהמכונה לא תראה. - Test Executable Code to Identify Vulnerabilities and Verify Compliance.9 בדיקות סטטיות ודינמיות ,כדי לשפר את מנגנון הבדיקות ע"י בניית בדיקות אחרי שאנחנו רואים כבר את הקוד הכתוב ולחשוב על דברים נוספים שכדאי לבדוק. - Regression & DAST Vulnerability Testing.10רגרסיה של בדיקות פונקציונליות ישנה לוודא שלא נפגע.כלומר תמיד אנחנו מבצעים עוד בדיקות ,אך זה בנוסף על הבדיקות שכבר יש לנו ,אנחנו תמיד צריכים לשאוף שגם הבדיקות הישנות שעשינו יעברו בצורה תקינה. בדיקות - SASTהם בדיקות קופסה לבנה ,בדיקות DASTהם בדיקות קופסה שחורה. ככל שנבדוק ונגלה שגיאות בשלב יותר מוקדם כך עלות וקלות התיקון יהיו נמוכים בהתאם. הבדיקות האלו (סטטי ודינמי) משלימות אחת את השניה ונותנות לנו תמונה רחבה על תקינות הקוד ואיכותו. - References Configure Software to Have Secure Settings by Default.11הזכרנו קודם שחשוב לעשות בייסליין לקונפיגורציות ,נגיד סקריפט שיוצר שרת בסיסי מאובטח לתחילת פיתוח חדש.בגלל שאנחנו יודעים שהבסיס הזה של השרת מאובטח ובנוי נכון ,מכאן נוכל לבנות את המשך הפיתוח ולבדוק מכאן ואילך. Infrastructure as Code - IAC -.12עוסק באוטומציה של אספקת תשתית ,הכוללת שרתים ,מסדי נתונים ,רשתות ורכיבי חומרה או תוכנה אחרים. Configuration-as-Code - CAC -.13עוסק בניהול ההגדרות והפרמטרים שאפליקציה או רכיב מערכת צריכים לפעול כהלכה. Responds to Vulnerabilities - RV -תחזוק נכון ומאובטח של התוכנה לאחר הפצתה .4 - CVE.1לעקוב אחרי העדכונים עבור חולשות ידועות ,ובניית תהליך תגובה בהתאם לאיומים ולהערכת הנזקים האפשריים.צריך שיהיה לנו שיטת פעולה כאשר מתגלה פגיעות בקוד. .2חיפוש באגים. .3התקנת פאצ'ים הכרחיים מיד כאשר מתגלים חולשות ופרצות אבטחה. .4כאשר מוציאים גרסה חדשה ,חשוב לרשום תיאור לגרסה ,כלומר מה התיקונים שנוספו או פיצ'רים שנוספו. OWASP Top TEN Proactive Controls עשרת ה controlsאשר מומלצים מטעם OWASPלצורך הגנת התוכנה שלנו 7 - Define Security Requirements.1להגדיר דרישות אבטחה -הוא הכי חשוב ,הוא הבסיס לכל שאר רכיבי האבטחה.ולכן כדאי להתייחס אליו משלב הכי מוקדם שאפשר בפיתוח התוכנה. -Application Security Verification Standard - ASVSסטנדרט מפורט שמפתחים כתבו למפתחים אחרים לצורך פיתוח מאובטח של אפליקציות.מכיל מספר רמות אבטחה שנדרש לאפליקציה.לכל רמת אבטחה ,מתאימים את הבקרות הנדרשות אליה ואת הסעיפים הנדרשים למימוש האבטחה. .1רמה - 1ללא דרישות אבטחה גבוהות(.הרמה הקלאסית והבסיסית ביותר שכל אפליקציה תרצה לעמוד בה לפחות). .2רמה - 2עם דרישות אבטחה אבל לא הכי קריטי. .3רמה - 3דרישות אבטחה ברמה קריטית (ככל שרמת האבטחה הנדרשת יותר גבוהה, יהיה עלינו לממש יותר פעולות אבטחה ,יש טבלאות שמראות לנו כמה מנגנוני אבטחה עלינו ליישם בכל רמה ובהתאם לסוג האפליקציה שאנו בונים). שיעור :5 - Leverage Security Frameworks & Libraries.2שימוש בספריות בצורה מאובטחת -רצוי להשתמש רק בספריות מוכרות ושיש להם קהילה פעילה.לא כדאי להשתמש בספריות לא מוכרות כי יכול להיות שיהיה בהם פגיעויות.יש כלי מיוחד ש OWASPהוציאו שבודק את הקוד שלנו ,הוא עובר על הקוד ועל כל הספריות שהשתמשנו בהם ונותן בסוף דוח מסודר האם פורסמו על הספריות שהשתמשנו בהם פגיעויות כאלה ואחרות.לכלי הזה קוראים OWASP Dependency Check. קיימים כמה כלים מחברות שונות המבצעות בדיקות אלו ,הקטגוריה הכללית לכלים מסוג זה נקראת : Dependency-Check is a Software Composition Analysis - SCA. - Secure Database Access.3ניהול גישות ל - DBאנו צריכים לבחון את הגישה לשרת המידע שלנו בצורה מבוקרת ולבדוק שאין אפשרות לדלף מידע.לבדוק שהקוד לא חשוף ל .SQL injection נביא דוגמה ,למשל אנו רוצים לקבל קלט מהמשתמש ולהשתמש בזה לצורך בניית שאילתה של SQL והמשתמש בחר להכניס לנו קוד זדוני הבא 1'='1' X' or'-- :ואז נקבל תנאי שתמיד נכון ומינוס מינוס אשר מבטל את כל מה שבא אחריו,הוא כאילו אומר ל SQLתתעלם מהשאר ,כמו הערה.וכך יכול לצאת לנו מידע מתוך הדטה בייס בלי שרצינו שזה יקרה. ניתן להגן מפני מקרים אלו ע"י שימוש בספריות מתאימות שהופכות את הקלט ל stringובודקות אותו בדיוק איך שהוא ,ללא אפשרות שהוא יתורגם לקוד ,לשיטה זו קוראים parameterized query. - Cross-Site Scripting Protection - XSSהתקפה באמצעות הזרקת קוד זדוני בד"כ הקוד הזדוני נכתב ב:java script - קיימים שני סוגים מרכזיים: ○ Reflective XSS -הכנסת קוד זדוני לתוך שאילתה או לתוך האתר ,והאתר נפגע מהקוד הזדוני.הוא לא נשמר בדטה בייס אלה מתבצע בתוך requestמסויים בלבד. ○ - Persistent XSSשותלים בתוך האתר קוד זדוני ,כך שכל מי שיטען את האתר יפגע מקוד זה.זה קוד שמוטמע בתוך הדטה בייס עצמו של האתר. דוגמה: 8 - Encode and Escape Data.4שימוש בטכניקות למניעת הזרקה של פקודות -הרעיון הכללי של שיטות אלו הוא המרת הקלט של המשתמש לטקסט אשר ממיר תווים מיוחדים לצורה ייחודית כך שהתו המיוחד יהפוך למחרוזת stringולא כחלק מקוד.ההמרה מתבצעת בצורה כזו שקלט המשמש הופך להיות טקסט בלבד ומבטל את האפשרות שטקסט זה יהפוך לקוד בר הרצה. ההבדל בין encodingלבין escapingהוא: encodingממיר כל תו מיוחד בטקסט לקידוד ממשי לדוגמא / :יהפוך להיות %20 לעומת escapingשלפני כל תו מיוחד יש backslashלדוגמא =\ :או \./ Encode -המרה של תווים מיוחדים לקידוד מיוחד המבטא את הסימן המיוחד. Escape -תרגום הקלט והוספה של באקסלאש "\" לפני כל תו מיוחד. Sanitize -פילטור נכון של הטקסט שהתקבל ע"י הבנת ההקשר והתוכן.זה כלי ברמה יותר גבוהה כי יש לו כבר המלצות מובנות וידע מוקדם איך להתמודד עם סוגים שונים של קלט. כלי לדוגמאOWASP Java HTML Sanitizer Project : החשיבות הרבה לשימוש בטכניקות אלו הוא למנוע התקפות מסוג XSSאו SQL injection שהזכרנו לעיל. כדאי ליישם את ההגנות האלו (ע"י שימוש בספריות ייעודיות) גם בצד הלקוח וגם בצד השרת. שיעור :6 - Implement Digital Identityהגנה על הזהות הדיגיטלית ושמירה מחטיפת סשנים ועוגיות .)(Cookieנתמקד ב HTTP security headersשיכולים לעזור לנו בזה. ○ -HTTP Strict Transport Security header - HSTSהוא מנגנון אשר השרת מוסיף לתשובה אותה הוא עונה למשתמש שפנה אליו ומודיע לו מעתה לא תקבל מענה ללא שימוש ב .HTTPSהפקודה אומרת בעצם לדפדפן "אני לא מוכן שתפנה אלי יותר ב HTTPאלא רק ב "HTTPSוגם אם הלקוח ינסה לפנות שוב ב HTTPהדפדפן שלו יחליף מייד ל HTTPSוכך זה מגן על הלקוח מ: (MITM - man-in-the-middle attacks) -.1מתוקף שיכול להאזין לסשיין או לחטוף אותו ולתווך בין הלקוח לשרת. SSL Striping Attack -.2הרצת סקריפט זדוני שהושתל אצל הלקוח שינסה לפנות לשרת בעצמו ב HTTPאך לא יצליח כי זה יחסם. cookie hijacking -.3גנבת עוגיה המכילה פרטי סשיין כיוון שמעתה זה יועבר בצורה מוצפנת. ההגנה הזו מגינה על המשך השיחה למעט הפניה הראשונה של הלקוח ,אך זה מצמצם את משטח התקיפה משמעותית ,לפניה הראשונה בלבד.לכן זה נחשב יחסית מוגן. כדי להבהיר למה זה לא עוזר לפניה הראשונה נתבונן בתרשים הבא: הסבר :בתמונה אנו רואים שהתוקף בעצם נכנס באמצע הבקשה הראשונה ,מה שקורה הוא שהתוקף ממשיך לנהל את השיחה עם השרת ב HTTPSואילו מחזיר ללקוח את 9 התשובות ב HTTPבלי שהלקוח יכול לדעת.התוקף בעצם משמש כמעין Proxyבין הלקוח לבין האתר. דרך ההגנה: .1הוספת פקודה לאפצ'י אשר מונעת תקשורת שלא באמצעות .HTTPS - expire timeזמן תפוגה. - includesubdomainsרק מהדומיין הנוכחי. .2טכניקה דומה בתוצאה אך לא בדרך ,נחשבת לבטוחה יותר כיוון שהיא מגנה גם על פניה ראשונה.רישום האתר שלנו מראש במאגר נתונים עולמי מיוחד ,כאשר הדפדפן יראה שהאתר נמצא במאגר ,הוא אוטומטית ימיר את הבקשות ל HTTPSבאופן מיידי. - X-XSS Headerהגנה שפועלת כמו HSTSשמוסיפים כמה הגדרות פשוטות ב- ○ Headerוזה אומר לדפדפן לחסום ניסיונות של XSS attackמהאתר שלנו תוספת מעניינת מאפשרת לדפדפן לדווח על ניסיונות לא חוקיים.כאשר אנחנו מגדירים 1זה אומר שזה פעיל ועל זה ניתן להוסיף עוד אופציות. - 0לא פעיל. - 1פעיל. - 1;mode=blockהדפדפן מונע טעינה של כל הדף בעת התקפת .xss > - 1;report=