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

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

הבנת חוצצים וזיכרון מערכת

כדי להבין מהי מתקפת חוצץ ואיך היא פועלת, צריך לדעת מהו מאגר ואיך עובד הזיכרון של המחשב.

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

המחסנית, המשתמשת במושג Last-in, First-out (LIFO), משמשת ב-RAM (זיכרון גישה אקראית) כדי לאחסן ביצועי תוכניות באופן זמני, בעוד הערימה מקצה זיכרון באמצעות הקצאה דינמית לגלובלית משתנים. אבל הדבר היחיד שמשותף להם הוא חיץ.

מהו מאגר?

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

instagram viewer

מהי הצפת מאגר?

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

כעת, בזיכרון של מחשב, מיד אחרי מאגר או מרחב מאגר מופיעה כתובת החזרה. כתובת החזרה זו נקראת למעשה Extended Instruction Pointer (EIP). תפקידו הוא להפנות את המחשב לתוכנית מוגדרת כאשר היא מלאה. כאשר למאגר יש יותר נתונים ממה שהוא יכול להחזיק והוא עולה על גדותיו, הוא עולה על גדותיו לכתובת ההחזרה.

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

מהי התקפת הצפת מאגר וכיצד היא פועלת?

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

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

ישנם חמישה שלבים עיקריים בהתקפות הצפת חיץ:

  1. ספייק
  2. מטושטשת
  3. מציאת הקיזוז
  4. החלפת ה-EIP או כתובת ההחזרה
  5. ניצול הפגיעות

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

מהם סוגי התקפות הצפת מאגר?

ישנם שני סוגים עיקריים של התקפות הצפת חוצץ: התקפות מבוססות מחסנית והתקפות מבוססות ערימה.

1. התקפות הצפת מאגר מבוססות מחסניות

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

2. התקפות הצפת מאגר מבוססות ערימה

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

כיצד ניתן למנוע התקפות הצפת מאגר?

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

1. שימוש בהגנה על זמן ריצה של מערכת ההפעלה

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

2. שימוש בשפות תכנות מאובטחות

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

3. השתמש באקראי בפריסת שטח כתובות (ASLR)

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

4. הקפידו על מדיניות אבטחה קפדנית

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

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

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

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