למי שלא מכיר את המתקפה, בקווים כלליים מדובר בכשל אבטחה במנגנוני העדכונים של אפליקציות שונות. פעם בפרק זמן מוגדר מראש (פעם ביום- בשעה קבועה, פעם בשבוע- ביום קבוע, פעם בכל עלייה של האפליקציה וכו’) האפליקציה בודקת מול השרתים שלה האם קיימת גירסה חדשה שלה, במידה וכן- היא מעבירה את המידע למשתמש ובמידה והוא מאשר- יורדת ומותקנת הגירסה החדשה.
במידה והמנגנון אשר אחראי להוריד ולהריץ את הגירסה החדשה לא מבצע בדיקות על הבינארי החדש שירד- סביר שהאפליקציה חשופה למתקפה הנ”ל, ביצוע המתקפה מאפשר לתוקף שהשיג גישת MITM (כגון לאחר Arp Poisoning ברשת מקומית) להחליף את הבינארי המקורי בבינארי שלו - ולגרום למנגנון העדכונים להריץ אותו על המחשב במחשבה כי מדובר בעדכון חדש.
אני אתן כאן דוגמא שמצאתי במנגנון העדכונים של הנגן RayV-Player. מדובר בנגן Streaming שמותקן באופן דיפולטיבי עם סרגל הכלים של “Mako”, כך שכל מי שהתקין את הנגן הנ”ל- חשוף למתקפה הזאת.
ולכל מי, ששאל, אז לא. אני ממש לא רואה האח הגדול.
בכל פעם ש-RayV Player נטען, הוא מבצע בדיקה האם שוחרר עדכון חדש, על ידי שליחת ה-Request הבא עם גירסתו:
תוקף שמזהה את הבקשה, יוכל להחליף בה את הפרמטרים (לגירסה ישנה יותר) כך שהשרת יחזיר הודעה כי קיימת גירסה חדשה:
שרת האפליקציה מקבל את הבקשה- ומבין כי מדובר בבקשה שבוצעה מאפליקציה ישנה (גירסה 2.0.1.49) - ולכן הוא מחזיר את ה-Response שאומר כי קיימת גירסה חדשה יותר (גירסה 3.0.1.49):
בשלב הנ”ל, על התוקף לבצע עריכה נוספת ב-Response לפני שהוא מגיע ללקוח המקורי, מפני שקיימת בדיקה פנימית באפליקציה האם הגירסה שהשרת החזיר היא אכן גירסה מעל הגירסה שיש בשטח:
במידה והכל בוצע כשורה, משתמש הקצה מקבל התראה כי קיימת גירסה חדשה:
במידה והמשתמש יאשר את ההתקנה של הגירסה החדשה (שלא באמת קיימת…), האפליקציה תשלח Request לשרת, שבתורו יפנה אותה להורדה שהיא ביקשה:
כאן מתבצעת החטיפה- לפני שה-Response מגיע ללקוח המקורי, התוקף מבצע עריכה לחבילת המידע, כך שמיקום ההורדה יהיה של בינארי זדוני כלשהו שמאפשר לתוקף שליטה על המחשב:
במידה ואין שום מנגנון אימות על ה-URL שממנו אמורה לרדת האפליקציה (בדיקות כגון: מאיזה HOST מורידים את הבינארי וכו’) האפליקציה תשלח בקשה להורדת הבינארי הזדוני:
והשרת (שבבעלותו של התוקף) יחזיר את הבינארי:
וההורדה של הבינארי הזדוני תתחיל… עכשיו נשאר להחזיק אצבעות במהלך ההורדה:
ובמידה ואין שום בדיקה על הבינארי לאחר ההורדה (בדיקה כגון השוואה של MD5 שעובר בערוץ מוצפן וכו’) - האפליקציה תריץ את הבינארי הזדוני (במקרה שלנו- ירד והורץ cmd.exe):
ולתוקף תהיה שליטה מלאה על המחשב…