חוקרי אבטחה מ“פרויקט זירו” (Project Zero), קבוצת חוקרי אבטחה השייכת לגוגל, פרסמו מידע אודות הדרך בה חברת NSO הישראלית הצליחה לעקוף את האבטחה של מכשירי האייפון ולפרוץ אותם באמצעות משלוח הודעת iMessage למכשיר וניצול חולשת אבטחה במנגנון הצגת קבצי ה-GIF באפליקציה.
חברת NSO הישראלית נמצאת כיום בליבה של פרשה סבוכה סביב השימוש בתוכנת הסייבר ההתקפית פגסוס, המאפשרת פריצה למכשירים, אשר על פי דיווחים נמצאה במכשירים של פעילי זכויות אדם, עיתונאים ואף עובדי במחלקת המדינה בארה”ב, אך את הסיבוך הפוליטי מסביב ל-NSO נותיר בצד ונתמקד בביצוע הטכני של הפרצה.
פריצה לאייפון באמצעות GIF
לפי חוקרי האבטחה של “פרויקט זירו”, חברת Citizen Lab הצליחה “לתפוס” הודעת פריצה של NSO ל-iMessage ולהבין ממנה כיצד פעל מנגנון הפריצה בו השתמשה החברה כדי לפרוץ למכשירים גם מבלי שהמשתמש נדרש לעשות פעולה כלשהי מעבר לקבלת ההודעה עצמה במכשיר, זאת על ידי שליחת קובץ GIF בדרך מתוחכמת, שלא דרשה פעולה אקטיבית מצד המשתמשים אליהם נשלח כדי להניע את הפרצה.
מהניתוח של חוקרי האבטחה, הפרצה בה נעשה שימוש בפגסוס קשורה לאופן בו ה-iMessage, שירות ההודעות המובנה של אפל, פעל במכשירי האייפון עד גרסה iOS 14.8 בה נסגרה הפרצה. עד לאותו שלב, השתמש שירות ה-iMessage במנגנון יעודי להפעלת קבצי GIF שמתקבלים בהודעות על מנת שהם יעבדו בלופ ללא הפסקה, צעד שבוצע באמצעות שגרה בשם IMTranscoderAgent העוקפת את אבטחת “ארגז החול” (Sandbox) בשם BlastDoor של אפל ומאפשרת למעשה את תחילת ההתקפה.
ה-iMessage הפעיל את שגרת ה-IMTranscoderAgent בכל מצב בו התקבל קובץ עם סיומת GIF באפליקציה, גם אם הוא לא באמת היה GIF, כאשר הוא משתמש בממשק (API) ה-CoreGraphics לשם הפיכת ה-GIF הרגיל ל-GIF שרץ בלולאה. עם זאת, ה-CoreGraphics מכיל בתוכו גם כלי ניתוח (parser) לקבצי PDF, שזיהה כי מדובר בקובץ PDF במסווה של GIF ופעל עליו בדומה לקובץ PDF רגיל מחוץ להגנות של המכשיר.
צריך לומר כי קבצי PDF ידועים לשמצה בכך כי הם יכולים להכיל בתוכם מידע רב נוסף, כולל קודי javascript, אך במקרה של אפל, ה-CoreGraphics PDF היה בנוי למנוע הפעלת קודי javascript.
כאן למעשה נכנס החלק החשוב של פגסוס, ובעוד שמערכת ה-iOS ביטלה את האפשרות להריץ קודי javascript, היא תמכה בקידוד JBIG2, תקן ישן משנות התשעים שאת התמיכה בו אפל הוסיפה באמצעות שימוש ב-Xpdf בעל הקוד הפתוח ולא בפיתוח עצמאי של החברה.
השילוב בין שני הדברים אפשר ל-NSO למצוא חולשת אבטחה במנגנון של Xpdf על מנת לפתח פרצת “הרצת קוד מרחוק” RCE (ר”ת remote code execution), המשתמשת במנגנון קריאת ה-JBIG2 דרך ה-iMessage באמצעות ביצוע “גלישת חוצץ” (Buffer overflow) בצורה מכוונת וייעודית במכשיר הסלולרי.
העובדה כי חברת NSO הצליחה, על פי הסבר החוקרים של פרוייקט זירו, ליצור פרצה חכמה ומורכבת במיוחד שאפשרה לפרוץ למכשיר ה-iOS של אפל מדגימה את חשיבות תחום האבטחה במכשירים השונים, כאשר פיתוח “תמים” של הרצת GIF באופן מתמשך אפשר למעשה ליצור פרצת אבטחה חמורה בגלל שימוש בפרויקט קוד פתוח שאותר ונוצל על ידי פגסוס.