מה זה iOS App Sandboxing?

iOS app sandboxing הוא ארכיטקטורה אבטחה ליבה המגבילה כל יישום למכל ייעודי שלה, למנוע ממנו גישה לקבצים מערכת, נתונים אחרים אפליקציה, או משאבי חומרה ללא הסכמת משתמש מפורשת.כאשר אפליקציה מותקנת, מערכת ההפעלה יוצרת במאי תיבות ארגז חול ייחודי עבור אפליקציה זו, וכל הקוד שלה, נתונים, העדפות, ו caches בתוך מנהל זה.

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

אדריכלות טכנית מאחורי סנדקוקסינג

ברמת הקרנל, iOS משתמשת בפקדי גישה חובה (MAC) שאוכפים על ידי מסגרת ארגז חול Seatbelt. Seatbelt מגדירה מערכת של כללים עבור כל תהליך אפליקציה, המציין אילו קבצים, ספריות, נקודות קצה רשת, ושירותי המערכת התהליך יכול לגשת.כללים אלה משולבים לתוך פרופיל ארגז חול כי הוא טעון בעת ההשקה של האפליקציה.

כל אפליקציה מקבלת את מנהלת המיכל שלה, בדרך כלל ממוקמת ב-FLT:0 בתוך מיכל זה, המערכת מחלקת עוד יותר אחסון לתוך תת-חקיאות כגון FLT:1, FLT:2, ו-FLT:3 כך שה אפליקציה יכולה לקרוא ולכתוב בחופשיות בתוך מיכל שלה, אך כל ניסיון לגשת אל נתיבים מחוץ למכל זה מעורר הכחשה מהגרעין הכולל ניסיונות לקרוא למסגרות אחרות, או לא לתת במפורש, או לא כלי חומרה.

פרופילי Sandbox מגבילים גם את התקשורת בין-מעבדה (IPC) לא יכולים להתקשר לשירותי מערכת שרירותיים או לשגר תהליכי רקע ללא זכויות ספציפיות.זה אומר שגם אם אפליקציה מצליחה לבצע קוד שרירותי, היא לא יכולה, למשל, להתחיל daemon שפועל בהתמדה ברקע או לשלוח הודעות לתהליך של אפליקציה אחרת.

מדדי אבטחה מהירים ב-iOS

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

אישורים ובקרת משתמשים

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

אפל העמיקה את הפקדות עם כל שחרור iOS.לדוגמה, iOS 14 הוסיף שיתוף מיקום משוער ואת היכולת להעניק תמונה גישה על בסיס לדימוי. iOS 15 הציגה דוח פרטיות App, אשר לוגים אשר כל אפליקציה יש גישה. iOS 16 ו-17 הודעות גישה נוספות של לוח מודעות, אישורי עבר, ומנעול לאחור עבור משתמשים בסיכון גבוה.

קוד Signing and App אימות

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

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

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

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

  • (FLT:0) Class A (Complete Protection): נתונים מוצפנים עם מפתח הנגזר מ- Passcode המשתמש, והוא נגיש רק כאשר המכשיר נפתח.
  • (הופנה מהדף C (התקבל עד לא נעול ראשון): 1 נתונים הופכים נגישים לאחר הפתח הראשון ונשאר נגיש עד שהמכשיר נפתח מחדש.
  • (בקיצור:0) C (המידע ללא תשלום פתוח): ההרחבה 1 זמינה כל עוד הקובץ פתוח, גם אם המכשיר נעול.
  • (הופנה מהדף ההרחבה:0) Class D (No Protection): קידוד 1FLT:1, אך המפתח תמיד זמין לאחר האתחול.

בנוסף להצפנת rest, iOS לאכוף אבטחת שכבת התחבורה (TLS) עבור כל חיבורי הרשת שבוצעו על ידי שירותי מערכת ואפליקציות רבות.אפל דורשת אפליקציות להשתמש ב- HTTPS כברירת מחדל, והוא מפרש את החריגים של App Transport Security (ATS) לאורך זמן.זה מבטיח כי נתונים המועברים בין המכשיר לשרתים מוצפנים במעבר, מה שמקשה על תוקפים כדי ליירט או לשנות תנועה.

שרשרת Boot מאובטח ו Roots of Trust

כאשר מכשיר iOS פועל, הוא מבצע קוד מתוך מסך רק Boot ROM אשר נשרף לתוך השבב במהלך הייצור.זה Boot ROM הוא בלתי-מוגדר והוא שורש החומרה של אמון.זה מאמת את החתימה של עומס המגבת הבא (iBoot) באמצעות מפתח הציבורי של Apple.Boot ואז מאמת את הקרנל, ואת הקרנל, ואת הקרנלים לתקן את המערכת התפעולית ואת כל המערכת הפעלה.

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

כיצד מנעו ה-Sandboxing לתקוף את הקטורים

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

  • (FLT:0Data exfiltration בין יישומים:FearLT:1 ללא ארגז חול, אפליקציה שנפגעה יכולה לקרוא את הקבצים של כל אפליקציה אחרת במכשיר. Sandboxing מונעת זאת על ידי הבטחת כל אפליקציה יש מערכת קבצים מבודדת משלה.
  • (FLT:0System file Change:FLT:1 , קוד מלא לא יכול לנסח מחדש את מערכת בינאריות, ספריות או קבצי תצורה כי קבצים אלה שוכנים מחוץ למכל האפליקציות.
  • גישה ל-0Keychain:0.10LT:1 iOS מספק Keychain בטוחה לאחסון אסימונים רגישים וסיסמאות.כל אפליקציה יכולה רק לגשת לפריטים של Keychain שלה, והמערכת מאחסנת זאת ברמת הקרנל.
  • (FLT:0) חזרה תהליך התעללות: 1FLT Apps לא יכול ליצור רקע daemons או סוכנים ללא זכויות מפורשות, אשר לעתים רחוקות ניתן.זה מונע קוד זדוני מקביעת עקשנות או הפעלת תהליכים נסתרים.
  • (FLT:0) משאב ההמראה של חומרה: FIRLT:1 גם אם אפליקציה מקבלת גישה למצלמה או למיקרופון באמצעות הפניות אישורים, ארגז חול מונע ממנו גישה לחומרה אחרת כמו בקר NFC או ל- Secure Enclave ללא זכאות נפרדת.

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

השלכות על מפתחים

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

השלכות פיתוח חשובות כוללות:

  • (ב) אין אפשרות לרישום:0 (ב) למפתחים של מערכת ההפעלה:0) ל-[[1924]], ל[[1924]], ול[[1924]], [[1924]], [[1924]],]], [[1924]]]], [[1924]]]]]], [[1924]]]]]]
  • (FLT:0) תקשורת בין-app: מידע שיתוף 1:1 בין יישומים דורש מנגנונים מפורשים כגון UIActivityViewController, UIPasteboard, או קבוצות גישה משותפת Keychain, אשר דורשות תצורה ואינטראקציה של משתמשים.
  • (FLT:0) חזרה ביצוע: 1FLT (האפליקציות) ניתן רק לרוץ ברקע למקרים ספציפיים לשימוש, כגון השמע השמעה, עדכוני מיקום, או רקע תשואות.
  • ניהול זכויות:0 (FLT:1 Capabilities כמו הודעות דחיפה, Apple Pay ו-iCloud אחסון דורש מתן זכאות פרופיל.מפתחים חייבים להגדיר אלה בפורטל מפתחי Apple ולהבטיח שהם מתאימים לפרופיל ארגז החול.
  • (FLT:0) שיקולים: FLT:1 מפתחים חייבים לבדוק את היישומים שלהם על מכשירים פיזיים כדי לאמת תאימות של ארגז חול, כפי סימולטור יש כללים רציפים דקים כי לא משקפים התנהגות מכשיר אמיתי.

אפל מספקת תיעוד נרחב וכלים כדי לעזור למפתחים לעבוד בתוך מגבלות ארגז חול. Xcode כולל תכונות של ארגז חול ניכוי ארגז החול אשר יינות הפרות גישה, ואת FLT:0App SandboxirFLT:1 מדריך מתאר את השיטות הטובות ביותר עבור עיצוב יישומים מאובטחים, חולבות ארגז החול.

השלכות למשתמשים

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

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

שיטות הטובות ביותר עבור משתמשים כוללות:

  • עיין הרשאות אפליקציה באופן קבוע בהגדרות > פרטיות ואמפ; אבטחה.
  • רק לתת הרשאות הדרושות לתפקיד הראשי של האפליקציה.
  • שמור על iOS מעודכן כדי לקבל את ההתאמות האחרונות אבטחה ושיפורים ארגז חול.
  • להימנע מעומס יישומים ממקורות שאינם בוטחים, שכן אלה עשויים לעקוף את חתימת הקוד של אפל ואת ביקורת האבטחה.
  • זיהוי פנים ניתן או Touch ID כדי להגן על מפתחות ההצפנה שמגן על נתונים מקודמים חול.

התפתחות האבטחה של iOS

אפל תמיד חיזקה את ארגז החול ואמצעי האבטחה מאז iOS הציגה לראשונה את המודל עם אייפון OS 2.0. פרופילי ארגז החול המוקדמים היו פשוטים יחסית ואפשרו יותר גמישות, אך כאשר iOS התבגר, הפרופילים הפכו למוגבלים יותר וגרנראליים.המבוא של מערכת ה-FLT:0EntitlementsFLT:1 נתן למפתחים דרך לבקש יכולות ספציפיות תוך שמירה על ברירת המחדל של ארגז החול חזק ככל האפשר.

אבני דרך משמעותיות כוללות:

  • (ב) [15] ,6:5 ,1) ,הציגו את ה-VPN של ה-VPN, ושיפור מעמדות הגנת הנתונים.
  • (ב) ,0)iOS 9:00: 1:1 , Enabled App Transport Security כברירת מחדל, מה שחייב יישומים להשתמש ב- HTTPS.
  • [01:0]iOS 12:3:101] הוסיף ארגז חול נוקשה יותר עבור תוכן ספארי והצגת מצב ה-USB מוגבל.
  • (FLT:0)iOS 14:03:FLT:1 דרש את כל היישומים לבקש רשות לעקוב אחר משתמשים ברחבי יישומים ואתרי אינטרנט (עיבוד טרנספורמטיביות).
  • (ב) [ה]הידועה:0] ב- 16:2 16:2:2:1], מצב ההנעה של משתמשים העומדים בפני איומים מתוחכמים, מגבילה את פני השטח של ההתקפה.
  • [ה]התרחבה:0 [iOS 17:00:] , [ה]: [ה], [ה], התגברה על מצב ההנעה והוסיפה את תכונות הגנת הקישור ואבטחת התקשורת.

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

מסקנה

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

כדי ללמוד עוד על ארכיטקטורת האבטחה של iOS, התייחס ל-Apple'sFLT:0.