השחתת זיכרון – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
Yonidebot (שיחה | תרומות)
מ בוט החלפות: זיכרון;
שורה 9:
כל הפרמטרים האלה וגם המשתנים הפנימיים של הפונקציה מוגדרים על המחסנית, ושם מוקצה להם כמות הזיכרון הדרושה להם.
 
פונקציות שמתעסקות עם קלט שמושם לתוך מערכים ולא בודקות את גודלם לפני שהן מבצעות את ההשמה הן חשופות להתקפה של הצפת מערך. אחד הפרמטרים שניתנים לפונקציה במקרה זה הוא התוכן שיש לשים במערך.
התוקף יבקש למלא את המערך בתוכן שהוא בכוונה גדול מאוד, יותר גדול יותר מהממדים של המערך.
אחד הפרמטרים שניתנים לפונקציה במקרה זה הוא התוכן שיש לשים במערך.
התוקף יבקש למלא את המערך בתוכן שהוא בכוונה גדול מאוד, יותר גדול מהממדים של המערך.
 
כאשר הפונקציה מנסה למלא את המערך בתוכן שקיבלה, נגמר לה המקום במערך לפני שנגמר התוכן למילוי. מאחר שהיא מבצעת את ההשמה בלי לבדוק, היא תמשיך למלא את המחסנית בתוכן ותדרוס נתונים אחרים שנכתבו בה. הקלט הזדוני דורס בכוונה את כתובת החזרה מהפונקציה עם הכתובת של תחילת אותו מערך. בצורה זו, כשיסתיים ביצוע הפונקציה, המעבד "יקפוץ" לא להמשך התוכנית שקראה לה, אלא לתחילת המערך, ויתחיל להתייחס לנתונים שבמערך בתור פקודות לביצוע. הפקודות הללו יכולות להיות כל דבר שהוא, ולכן התוקף למעשה יכול לבצע כל שברצונו על המחשב שהריץ את התוכנית הזו.