כיצד ניתן להבחין בין קוד לנתונים?
מניעת ביצוע נתונים (DEP)
מניעת ביצוע נתונים (DEP) קיימת מאז iOS 5.0 והיא טכניקה לאסור על קוד שרירותי לפעול בזיכרון. DEP מגן מפני ניצול על ידי מניעת ביצוע קוד מדפי נתונים, כגון דפי הערימה המוגדרים כברירת מחדל, דפי מחסנית שונים ודפי מאגר זיכרון. זוהי דרך להבחין בין קוד לנתונים, המאפשרת להפעיל רק קוד בזיכרון. מטענים המייצרים נתונים דרך הרשת, קבצים וכו', אינם מורשים לבצע בזיכרון. עם זאת, ישנה דרך לעקיפת DEP על ידי שימוש ב-ROP (תכנות מונחה החזרה), אשר עושה שימוש חוזר בקטעי קוד הפעלה שכבר נטענו בזיכרון כדי ליצור את מטען הניצול. תוקפים משתמשים לעיתים קרובות ב-ROP כדי לעקוף את DEP. אך iOS מנסה להקשות על מעקפים כאלה על ידי אכיפת חתימת קוד, אשר נעשית על ידי אפל עצמה או על ידי רשות מהימנה כגון ארגון המשתמש ב-Apple iOS כדי להפיץ את האפליקציות הפרטיות/בתוך שלה. זה מגביל את התוקפים מלהפעיל ROP, אך לא קוד מעטפת.
נתונים וקוד נבדלים זה מזה, ולכן ישנו מנגנון הנקרא "מניעת ביצוע נתונים" (DEP) שמטרתו להבחין ביניהם.