לדלג לתוכן

איך חוקרים CVE אמיתי - תהליך העבודה מאחורי הקלעים

CVE (Common Vulnerabilities and Exposures) הוא מזהה ייחודי שניתן לחולשת אבטחה מתועדת ומוכרת - משהו כמו מספר תעודת זהות לבאג אבטחה. כשאתם רואים כותרת חדשות כמו "נמצאה חולשה קריטית ב-CVE-2024-XXXX", מישהו בפועל ישב וחקר את זה. בואו נבין איך תהליך כזה נראה בפועל, לא רק בתיאוריה.

שלב ראשון - בחירת יעד

חוקרי חולשות לא סתם "פותחים תוכנה אקראית ומחפשים". יש כמה שיקולים שמכוונים את הבחירה:

  • פופולריות והיקף השפעה. תוכנה שנמצאת בשימוש נרחב (ספריות open source פופולריות, רכיבי מערכת הפעלה, פרוטוקולים נפוצים) הופכת כל חולשה שנמצאת בה למשמעותית יותר.
  • משטח תקיפה מעניין. תוכנה שמעבדת קלט חיצוני לא מהימן - קבצים, בקשות רשת, פורמטים מורכבים - היא מטרה טבעית, כי שם נוצרות רוב החולשות.
  • שינויים אחרונים בקוד. קוד חדש נוטה להכיל יותר באגים מקוד ותיק שכבר "התייצב". חוקרים רבים עוקבים אחרי commit history של פרויקטי קוד פתוח ומחפשים שינויים חשודים.

שלב שני - הבנת התוכנה

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

שלב שלישי - חיפוש החולשה עצמה

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

  • סקירת קוד ידנית. קריאה שיטתית של אזורים חשודים - טיפול בזיכרון, פענוח פורמטים, המרות בין טיפוסי נתונים. חיפוש דפוסים מוכרים של טעויות, כמו חישובי גודל שיכולים לגלוש (integer overflow) שמובילים בתורם לגלישת חוצץ.
  • Fuzzing. הזנת כמויות עצומות של קלט אקראי ומעוות לתוכנה, ומעקב אחרי קריסות. זו שיטה שמוצאת חלק ניכר מה-CVE-ים המתועדים בשנים האחרונות, בעיקר בתוכנות open source.
  • Diffing בין גרסאות. כשיוצאת עדכון אבטחה לתוכנה, חוקרים משווים בין הגרסה הישנה לחדשה כדי לראות בדיוק מה תוקן - ואז בודקים אם גרסאות ישנות יותר, שעדיין בשימוש בעולם, פגיעות לאותה בעיה.

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

מציאת קריסה או התנהגות חריגה זו רק ההתחלה. חוקר רציני לא עוצר שם - הוא צריך להוכיח שהחולשה בעלת השפעה אמיתית. זה אומר לבנות Proof of Concept (PoC) שמדגים בצורה ברורה מה קורה - לדוגמה, האם החולשה רק גורמת לקריסה (Denial of Service), או שאפשר לנצל אותה להרצת קוד שרירותי. ההבדל בין השניים משפיע דרמטית על חומרת הדירוג שהחולשה תקבל.

שלב חמישי - גילוי אחראי (Responsible Disclosure)

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

מה זה אומר בשבילכם כמתחילים

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

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

מחפשים CVE ראשון ולא בטוחים מאיפה להתחיל? בדיסקורד שלנו יש חוקרים בכל שלב שמחים לשתף כיוונים.

הצטרפו לקהילה בדיסקורד

לסיכום

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