לדלג לתוכן

איך אתרים באמת נפרצים - הדפוסים החוזרים שכדאי להכיר

עד עכשיו דיברנו על חולשות בודדות - XSS, SQL Injection, IDOR, וכל השאר, כל אחת בנפרד. אבל פריצות אמיתיות כמעט אף פעם לא נראות כמו "מצאתי חולשה אחת ונגמר הסיפור". הן נראות כמו שרשרת - טעות קטנה שמובילה לגישה קצת יותר גדולה, שמובילה לעוד טעות, עד שבסוף התוקף במקום שאף אחד לא רצה שהוא יהיה. בואו נדבר על הדפוסים האמיתיים.

פריצה זה כמעט תמיד שרשרת, לא חולשה בודדת

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

דפוס ראשון - הצד החלש ביותר בשרשרת

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

דפוס שני - מידע שנראה תמים חושף יותר ממה שחשבתם

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

דפוס שלישי - הרשאות שהצטברו יותר ממה שצריך

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

דפוס רביעי - הפער בין "ידוע" ל"מתוקן"

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

דפוס חמישי - הגורם האנושי

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

למה החשיבה הזאת חשובה יותר מהכרת החולשות עצמן

מי שמכיר רק את ההגדרה היבשה של כל חולשה, בלי להבין איך היא משתלבת עם חולשות אחרות בעולם האמיתי, יתקשה מאוד למצוא בעיות בבדיקת חדירות אמיתית או בתוכנית bug bounty אמיתית. שם, לרוב, אין שלט שאומר "כאן יש IDOR". יש מערכת מורכבת, וצריך לחשוב כמו תוקף אמיתי שמחפש כל חוליה חלשה ומנסה לחבר אותן יחד.

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

לסיכום

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

הצטרפו לקהילה בדיסקורד ותלמדו לחשוב על אבטחה בצורה הזאת יחד עם קהילה שלמה בדרך.