פרצות תוכנה הן בעיה משמעותית באבטחת סייבר. הם מאפשרים לתקוף מוצרי תוכנה וכאשר מוצרים אלה מחוברים לרשתות מאובטחות אחרת, הם יכולים לספק נקודת כניסה להאקרים.
כל מוצרי התוכנה המקצועיים נבדקים ביסודיות לפני השחרור. למרבה הצער, נקודות תורפה הן עדיין תופעה שכיחה. אחת הדרכים למצוא פגיעויות נוספות היא להשתמש בטכניקת בדיקת תוכנה המכונה fuzzing.
אז מה זה מטושטש ואיך זה עובד?
מה זה Fuzzing?
Fuzzing היא טכניקת בדיקת תוכנה אוטומטית המנסה למצוא נקודות תורפה באמצעות תשומות אקראיות.
לעתים קרובות תוכנה מתנהגת בצורה בלתי צפויה כאשר המשתמש מזין קלט שונה ממה שהתבקש. Fuzzing הוא התרגול של הזנת כמויות גדולות של קלט בלתי צפוי ורישום מה קורה. הרעיון הוא שהמשתמש יכול לאחר מכן לפקח על התוכנה ולקבוע אם קיימות פרצות או לא.
Fuzzing משמש לבדיקת מוצרי תוכנה ועל ידי אנשי מקצוע בתחום האבטחה כדי לקבוע אם הרשת מאובטחת. הוא משמש גם על ידי האקרים שמתרגלים fuzzing כדי למצוא נקודות תורפה שבהן הם עצמם יכולים להשתמש.
הפגיעויות שהתגלו על ידי ה-fuzzing שונות מאוד. קלט בלתי צפוי עלול לגרום לתוכנה פשוט לקרוס. אבל זה גם עשוי להחזיר מידע פרטי או לאפשר למשתמש לגשת לחלקים מהתוכנה שאחרת היו מחוץ לתחום.
מהם היתרונות של Fuzzing?
Fuzzing היא רק אחת מדרכים רבות שבהן ניתן לבדוק את נקודות התורפה של מוצרי תוכנה. זה פופולרי בגלל:
- Fuzzing הוא אוטומטי לחלוטין. לאחר הגדרת תוכנית מטושטשת, היא יכולה להמשיך לחפש נקודות תורפה ללא קלט אנושי.
- Fuzzing עשוי למצוא נקודות תורפה ששיטות בדיקת תוכנה אחרות אינן עושות. בגלל זה, הוא משמש לעתים קרובות בנוסף לטכניקות ידניות.
- Fuzzing משמש לעתים קרובות על ידי האקרים כדי למצוא פגיעויות של יום אפס. שימוש באותן טכניקות כמו האקרים מאפשר למפתחים למצוא פרצות של יום אפס לפני שהם עושים זאת.
איך עובד Fuzzing?
לכלי המשמש לטשטוש יש בדרך כלל שלושה מרכיבים. לעתים קרובות מתייחסים אליהם כמשורר, שליח ואורקל.
המשורר
המשורר מתחיל בתהליך ואחראי להפקת מקרה מבחן. מקרה מבחן הוא רשימה ארוכה של תשומות פוטנציאליות.
השליח
השליח מכניס את כל התשומות האקראיות לתוכנה הממוקדת. Fuzzers מתוכננים לעשות זאת באופן אוטומטי, ומאפשרים לבדוק כמויות גדולות של תשומות בכמויות גדולות.
האורקל
האורקל בודק אם אחת מהכניסות גורמת לתוכנה לעשות משהו אחר ממה שהיא תוכננה לעשות. אם הטשטוש מתבצע למטרות לגיטימיות, ניתן לשכפל ולתקן את ההתנהגות. לחלופין, אם האקר מבצע את הטשטוש וההתנהגות הבלתי צפויה שימושית, הוא עשוי לשמש למטרות זדוניות.
איך תוקפים משתמשים ב-Fuzzing?
Fuzzing היא טכניקה פופולרית בקרב האקרים מכיוון שהיא מאפשרת להם למצוא נקודות תורפה בתוכנה ללא גישה לקוד המקור. מכיוון שה-fuzzing הוא אוטומטי, זה גם קל לביצוע. אם האקר מגלה פגיעות, ייתכן שהוא יוכל לבצע את ההתקפות הבאות.
התקפות DDoS
אם Fuzzing מגלה שקלטות מסוימות דורשות זמן רב לעיבוד, ניתן להשתמש במידע זה כדי להפעיל מתקפת DDoS. מתקפת DDoS כולל שליחת כל כך הרבה בקשות למערכת שהיא מפסיקה לתפקד. Fuzzing מאפשר להתאים בקשות כך שהן דורשות את מירב משאבי המערכת כדי להגיב עליהן.
הזרקת SQL
התקפת הזרקת SQL הוא כאשר הצהרות SQL זדוניות נשלחות ליישום. אם ההצהרות הללו אינן מחוטאות כראוי, הן יכולות לאפשר לתוקף ליצור אינטראקציה עם מסד הנתונים. זה עשוי לאפשר להם לגנוב נתונים או לשנות אותם. Fuzzing הוא כלי יעיל לניסיון של כמויות גדולות של הצהרות SQL ולקביעה אם יש כאלה שיוצרות תגובה חיובית.
הצפת מאגר
מתקפת הצפת חיץ הוא כאשר נוספים נתונים למאגר של תוכנית ממה שהיא יכולה להתמודד. בתרחיש זה, ייתכן שהאקר יגרום לתוכנית זו להפעיל קוד זדוני. זה יכול לשמש כדי לגנוב נתונים או כדי לקבל גישה לא מורשית. Fuzzing משמש למציאת כניסות שעלולות לגרום להצפת מאגר להתרחש.
סוגי טשטוש
ניתן לסווג כלים מטושטשים בהתבסס הן על האופן שבו נוצרים מקרי בדיקה והן על מידת הידוע על המערכת.
מטומטם נגד. לִכאוֹב
טשטוש מטומטם פשוט מוסיף כמויות גדולות של כניסות אקראיות. הוא לא בוחר בקלטים שסביר להניח שיתקבלו על ידי האפליקציה. זה מקל על היישום מבלי לדעת דבר על התוכנה; עם זאת, זה גם מאוד לא יעיל שכן רוב התשומות יידחו.
טשטוש חכם מייצר תשומות שהאפליקציה עשויה לקבל. זה דורש שהמשתמש יבין איזה פורמט קלט מקובל ואז יוצר כמויות גדולות של קלט בתוך פורמט זה. טשטוש חכם דורש יותר מאמץ וידע במוצר כדי ליישם, אבל הוא יעיל יותר באופן משמעותי.
מוטציה לעומת דורות
Fuzzers מוטציות לוקחים קלט שהיה מקובל בעבר ומבצעים בו שינויים קלים. זה מאפשר להפיק תשומות שסביר שיתקבלו ללא ידיעת הפורמט המקובל.
פיוזרים דוריים יוצרים תשומות חדשות לחלוטין על סמך מה שידוע על הפורמט המקובל.
קופסה לבנה לעומת קופסה שחורה
נעשה שימוש ב-Black Box Fuzzing ללא כל מידע על האפליקציה הנבדקת. זה פחות יעיל מ-white fuzzing אבל ניתן להחיל אותו על כל יישום ללא גישה לקוד המקור. זה הופך אותו לפופולרי בקרב האקרים.
White box fuzzing משתמש במידע על האפליקציה הנבדקת כדי ליצור תשומות שסביר להניח שהן יתקבלו ולייצר נקודות תורפה. הוא משמש בעיקר מפתחי תוכנה מכיוון שהוא יעיל יותר מ-black box fuzzing.
Fuzzing היא שיטת בדיקת תוכנה רבת עוצמה המשמשת מפתחי תוכנה, אנשי אבטחה והאקרים. זה דורש מאמץ מינימלי ליישום ומסוגל למצוא נקודות תורפה ששיטות בדיקות תוכנה אחרות אינן עושות.
זה חשוב במיוחד מנקודת מבט אבטחה מכיוון שהוא משמש לעתים קרובות לגילוי פגיעויות של יום אפס. ניתן לגלות ולתקן את הפגיעויות הללו על ידי אנשי אבטחה, או לגלות ולנצל על ידי האקרים.