העדכון שאתם לא יכולים להרשות לעצמכם לדלג עליו: סוף התמיכה ב-Office 2016 ו-Office 2019

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

כיצד MetaDefender™‎ מונע התקפות תמונה מתוחכמות בשפת דיבור רב-לשונית 

עַל יְדֵי לוק נגוין, ראש צוות בדיקות חדירה
שתף את הפוסט הזה

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

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

קבצי פוליגלוט הם קבצים שיכולים להיות תקפים כמספר סוגים בו זמנית, מה שמאפשר לתוקפים לעקוף אמצעי אבטחה מבוססי סוג קובץ. דוגמאות לכך כוללות GIFAR, שמתפקד גם כקובץ GIF וגם כקובץ RAR, פוליגלוטים של JavaScript/JPEG המתפרשים גם כקובץ JavaScript וגם כקובץ JPEG, וקבצי Phar-JPEG, המזוהים גם כארכיון Phar וגם כתמונת JPEG. קבצי פוליגלוט אלה יכולים להישאר בלתי מזוהים עם סיומות מטעות או ריקות ש"מטעות" מערכות לחשוב שמדובר בסוג קובץ שפיר (כמו תמונה או PDF) תוך שהם מכילים קוד זדוני שלא זוהה. 

אימות העלאת קבצים 

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

תחומי המיקוד העיקריים לאבטחת העלאות קבצים כוללים: 

  • אימות סיומת: הטמע רשימת חסימה או רשימת היתרים של סיומות קבצים כדי להבטיח שרק סוגי קבצים מותרים יתקבלו. 
  • ניקוי שמות קבצים: צור מחרוזות אקראיות עבור שמות קבצים בעת העלאה. 
  • אימות סוג תוכן: אמת את סוג ה-MIME של הקובץ שהועלה כדי לוודא שהוא תואם לפורמט הצפוי. 
  • אימות כותרת תמונה: עבור העלאות תמונות, ניתן להשתמש בפונקציות כמו getimagesize() ב-PHP כדי לאשר את תקפות הקובץ על ידי בדיקת הכותרת שלו. 

עקיפת מסנן העלאת קבצים 

למרות יישום אמצעי הגנה אלה, תוקפים ממשיכים לשפר את שיטותיהם כדי לעקוף מנגנוני אימות. טכניקות כגון הזרקת תווים ריקים, סיומות כפולות וסיומות ריקות עלולות לפגוע באימות הסיומות: קובץ עשוי להופיע עם שם כמו "file.php.jpg", "file.php%00.jpg", "file.PhP" או "file.php/" כדי להתחמק מגילוי. ניתן לעקוף אימות מסוג MIME על ידי שינוי בתים קסומים ראשוניים של הקובץ, כגון שינוים ל-GIF89a, הכותרת המשויכת לקבצי GIF, מה שיכול להערים על המערכת לזהות את הקובץ כפורמט לגיטימי. בנוסף, ניתן להעלות קובץ .htaccess זדוני כדי לתמרן את תצורות השרת, מה שמאפשר ביצוע של קבצים עם סיומות לא מורשות. 

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

התקפות קבצים רב-תכליתיות 

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

דיאגרמת זרימה המציגה קובץ רב-תכליתי המעובד גם כתמונה וגם כתמונה זדונית של JavaScript
קובץ רב-תכליתי של Javascript/Jpeg

קובץ פוליגלוט פשוט עם ExifTool

טכניקה פשוטה ליצירת תמונה רב-לשונית היא להשתמש ב-ExifTool. יישום רב עוצמה זה נועד לקרוא, לכתוב ולשנות פורמטים שונים של מטא-נתונים, כגון EXIF, XMP, JFIF ו-Photoshop IRB. עם זאת, אנשים זדוניים עלולים לנצל את ExifTool כדי לבצע פעולות מזיקות, כולל יצירת תמונה רב-לשונית בכוונה זדונית. על ידי שימוש ב-ExifTool כדי להטמיע קוד זדוני במטא-נתונים של EXIF ​​של תמונה - במיוחד בשדות כמו UserComment ו-ImageDescription - תוקפים יכולים ליצור תמונה רב-לשונית ולהגדיל את סיכוייהם לניצול מוצלח. 

להלן מטא-דאטה של ​​ה-EXIF של התמונה, המספק מידע מקיף הקשור אליה. 

צילום מסך המציג מטא-נתונים מפורטים של Exif שחולצו מקובץ תמונה, כולל סוג קובץ, רזולוציה ופרטי קידוד
מטא-נתונים של Exif של תמונה

באמצעות שימוש ב-ExifTool, גורם איום יכול להטמיע קוד זדוני בתוך המטא-דאטה של ​​EXIF ​​של תמונה, ובכך ליצור קובץ פוליגלוט שעשוי לעקוף מנגנוני אימות. 

דוגמה לקוד מזיק שנוסף לקטע הערות המשתמש במטא-נתונים של Exif של תמונה
הכנס קוד מזיק לאזור הערות המשתמש במטא-דאטה של ​​Exif

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

בקשה-תגובה המציגה דחייה של מעטפת אינטרנט זדונית עקב מגבלות סוג MIME
מעטפת האינטרנט נדחתה מכיוון שסוג ה-MIME שלה אינו מותר
דוגמה של עקיפת הגבלות באמצעות קובץ תמונה רב-תכליתי שנוצר באמצעות Exiftool, באמצעות בקשה-תגובה
עקיפת ההגבלה באמצעות תמונה רב-משמעית שנוצרה באמצעות exiftool

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

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

קובץ פוליגלוט של Javascript/JPEG 

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

לתמונת JPEG יש את המבנה הבא: 

בתיםשֵׁם
0xFF, 0xD8תחילת התמונה
0xFF, 0xE0, 0x00, 0x10, …כותרת ברירת מחדל
0XFF, 0XFE, … תגובה לתמונה
0xFF, 0xDB, …טבלת הכימות
0xFF, 0xC0, …תחילת המסגרת
0xFF, 0xC4, …

שולחן האפמן

0xFF, 0xDA, …תחילת הסריקה
0xFF, 0xD9סוף התמונה

במבנה תמונה של JPEG, הכותרת מופיעה אחריה מידע על האורך. כפי שמוצג בדוגמה הקודמת, הכותרת מתחילה ברצף 0xFF 0xE0 0x00 0x10 , כאשר 0x00 0x10 מייצג באופן ספציפי את אורך הקטע, המציין 16 בתים. הסמן 0xFF 0xD9 מסמן את סוף התמונה. 

ייצוג הקסדצימלי של קובץ תמונה, המציג את המבנה והקידוד שלו
ייצוגים הקסדצימליים של תמונה

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

ראשית, ב-JavaScript, ניתן לפרש את הרצף 0xFF 0xD8 0xFF 0xE0 כערכים שאינם ASCII, אך 0x00 0x10 אינו חוקי ויש לשנותו. התחליף המתאים לערכי הקסדצימליים הללו הוא 0x2F 0x2A , שהוא הייצוג ההקסדצימלי של /*, תחביר המשמש לפתיחת הערה ב-JavaScript. החלפה זו מאפשרת להתעלם מנתונים בינאריים שנותרו כחלק מההערה. 

עם זאת, מכיוון ש -0x00 0x10 מייצג במקור את אורך כותרת ה-JPEG, שינויה ל -0x2F 0x2A , אשר במספר עשרוני שווה ל-12074, דורש הגדרה מחדש של כותרת ה-JPEG כדי לשמור על תוקפה. לשם כך, יש להוסיף בתים ריקים, ויש למקם את מטען ה-JavaScript לאחר סמן ה -0xFF 0xFE , המציין הערה לתמונה במבנה ה-JPEG. 

לדוגמה, אם המטען הוא */=alert(document.domain);/* , שאורכו 28 בתים, מספר הבייטים הריק הנדרש יחושב באופן הבא: 12074 (אורך חדש) - 16 (אורך הכותרת המקורי) - 2 (עבור סמן 0xFF 0xFE ) - 28 (אורך המטען) = 12,028 בתים ריק. 

כתוצאה מכך, קוד ה-JavaScript בתוך תמונת ה-JPEG ייראה כך: 

דוגמה לקוד JavaScript המוטמע בתוך משתנים שאינם ASCII לניצול
הטמעת קוד JavaScript
ייצוג הקסדצימלי של קובץ JPEG רב-שפתי
ערכים הקסדצימליים של התמונה שהשתנתה, המציגים הוספת הערה התראה
הערך ההקסדצימלי של התמונה לאחר השינוי

לבסוף, יש למקם את הרצף 0x2A 0x2F 0x2F 0x2F (התואם ל-*///) ממש לפני סמן הסיום של קובץ ה-JPEG 0xFF 0xD9 . שלב זה סוגר את הערת ה-JavaScript ומבטיח שהמטען מבוצע כהלכה מבלי לשבש את מבנה קובץ ה-JPEG. 

תצוגה מורחבת של קוד JavaScript בתוך התמונה ההקסדצימלית שעברה שינוי
סגור את תגובת ה-JavaScript

לאחר שינוי זה, עדיין ניתן לפרש את התמונה כתמונה תקפה ובו זמנית להכיל קוד JavaScript בר-הפעלה.

קובץ JPEG פוליגלוט מוצג כתמונה סטנדרטית במציג
תמונה רב-לשונית מוצגת כתמונה סטנדרטית

כאשר קובץ HTML טוען תמונה זו כקוד מקור של JavaScript, היא נשארת בתוקף ויכולה לבצע את קוד ה-JavaScript המוטמע: 

קוד HTML המטמיע JPEG רב-שפתי כסקריפט
פלט דפדפן המדגים תמונה רב-תכליתית ניתנת להרצה כקוד JavaScript
קובץ הרצה של תמונת פוליגלוט כקוד JavaScript
קבצי PHAR/JPEG פוליגלוט 

קבצי תמונה של פוליגלוט מציגים סיכונים לא רק לניצול בצד הלקוח, אלא גם להתקפות בצד השרת בנסיבות מסוימות. דוגמה לכך היא קובץ הפוליגלוט Phar/JPEG, אשר ניתן לפרש גם כארכיון PHP (Phar) וגם כתמונת JPEG. מבנה קובץ Phar מאפשר הטמעה של נתונים מסודרים במטא-דאטה, דבר המהווה סיכון פוטנציאלי לפגיעויות ביטול סידור, במיוחד בגרסאות PHP מסוימות. כתוצאה מכך, ניתן למנף קבצי פוליגלוט Phar/JPEG כדי לעקוף אימות העלאת קבצים ולנצל שרתים פגיעים. 

פורמט קובץ ה-Phar מוצג כ-stub/manifest/contents/signature, ומאחסן את המידע החשוב לגבי מה שכלול בארכיון ה-Phar במניפסט שלו:  

  • קבצי Stub: קבצי ה-stub הם קטע קוד PHP המופעל כאשר ניגשים לקובץ בהקשר בר-הפעלה. אין הגבלות על תוכן ה-stub, מלבד הדרישה שהוא יסתיים עם __HALT_COMPILER();. 
  • מניפסט: סעיף זה מכיל מטא-נתונים אודות הארכיון ותכניו, אשר עשויים לכלול מטא-נתונים של Pharma מסודרים המאוחסנים בפורמט serialize(). 
  • תוכן הקובץ: הקבצים המקוריים הכלולים בארכיון. 
  • חתימה (אופציונלי): מכילה פרטי חתימה לאימות שלמות. 
מבנה פורמט קובץ Phar המציג קטעי קבצים, מניפסט, תוכן קובץ וחתימות
פורמט קובץ פארמה

מכיוון שהקובץ ה-stub אינו מטיל הגבלות תוכן מעבר להוראות ה-__HALT_COMPILER(), גורם איום יכול להזריק את הערכים ההקסדצימליים של תמונה לתוך ה-stub. על ידי הצבת ערכים אלה בתחילת קובץ ה-PHAR, ניתן לזהות אותו כתמונה תקפה. כתוצאה מכך, ניתן לבנות בקלות פוליגלוט PHAR/JPEG על ידי הוספת הבייטים ההקסדצימליים של תמונת JPEG בתחילתו, כפי שמודגם בדוגמה הבאה: 

סקריפט PHP יוצר קובץ Phar/JPEG רב-שפתי עם מטא-דאטה ותוכן זדוני
צור קובץ פוליגלוט Phar/JPEG

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

ערכים הקסדצימליים של קובץ רב-תכליתי PHAR/JPEG
ערכים הקסדצימליים של קובץ רב-תכליתי PHAR/JPEG
פלט PHP מזהה את קובץ PHAR הפוליגלוט כתמונה תקפה
מהדר PHP מזהה אותו כתמונה חוקית

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

כאשר ניגשת לקובץ PHAR דרך עטיפת PHAR (phar://) בפונקציות PHP מסוימות (PHP ≤7.x) הקשורות לפעולות קבצים - כגון file(), file_exists(), file_get_contents(), fopen(), rename() או unlink() - הפונקציה unserialize() מופעלת עבור המטא-דאטה שעברו סדרה. בסופו של דבר, באמצעות PHPGGC, כלי נפוץ לבניית שרשראות גאדג'טים של PHP, גורמי איום יכולים לנצל את פגיעות הביטול-סריאליזציה באמצעות קובץ רב-תכליתי של PHAR, ובכך לפגוע בשרת יישומי האינטרנט. 

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

קטע מקובץ תצורה של PHP שמגדיר את phar.readonly ל-0
קובץ תצורה של PHP
דוגמה לקוד של יישום אינטרנט הפגיע לניצול לרעה עקב טיפול לא תקין בנתיבי קבצים
קוד פגיע ביישום אינטרנט

על ידי מינוף קבצי פוליגלוט כדי לעקוף מסנני העלאת קבצים וצירוף עטיפת PHAR ‏(phar://) למיקום הקובץ, תוקפים יכולים לתמרן את שרת האינטרנט כך שיתייחס לקובץ כארכיון PHAR. מניפולציה זו עלולה לאחר מכן לגרום לפגיעות של ביטול סידור, מה שמוביל להרצת קוד מרחוק באמצעות פונקציות תפעול קבצים. 

מתקפת ביצוע קוד מרחוק באמצעות קובץ רב-תכליתי PHAR/JPEG מדגימה מתקפה המשתמשת בקובץ רב-תכליתי זדוני כדי לבצע קוד מרחוק.
מתקפת ביצוע קוד מרחוק באמצעות קובץ רב-תכליתי PHAR/JPEG
סימולציה של מתקפות בעולם האמיתי עם קבצי PHAR/JPEG Polyglot 

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

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

הגן על אפליקציית האינטרנט שלך עם MetaDefender ליבה™ ו MetaDefender ICAP שרת™

MetaDefender Core ו MetaDefender ICAP Server מגן על יישומי האינטרנט שלך מפני איומים אלה ומשפר את אבטחת הרשת והתשתית שלך.  

MetaDefender ICAP Server ו MetaDefender Core לעבוד יחד כדי להגן על שרת האינטרנט שלך מפני התקפות מתוחכמות הכוללות קבצי PHAR/JPEG רב-תכליתיים זדוניים בדרכים הבאות: 

כאשר קובץ רב-תכליתי PHAR/JPEG מועלה ליישום האינטרנט, הוא מועבר תחילה אל MetaDefender Core בְּאֶמצָעוּת MetaDefender ICAP Server לתהליך חיטוי מקיף באמצעות שלנו Deep CDR טכנולוגיית ™. בניגוד לבודקי סוגי קבצים פשוטים, Deep CDR מנתח ביסודיות את מבנה הקובץ שהועלה, מסיר סקריפטים, פקודות מאקרו ותוכן שאינו תואם את המדיניות, ובונה מחדש את קובץ ה-JPEG כך שיכלול רק את הנתונים הדרושים לו.

תהליך זה מסיר תוכן PHAR מזיק שנוסף לאחר סמן הסיום של JPEG ( 0xFF 0xD9 ), ומבטיח שהקובץ שעבר ניקוי הוא JPEG בלבד. כתוצאה מכך, יישום האינטרנט מוגן מפני התקפות רב-תכליתיות של PHAR/JPEG; גם אם תוקף יכול לשנות את סכמת עיבוד הקבצים כדי להחדיר מעטפת PHAR, הוא לא יכול לנצל את שרת האינטרנט.

ערכים הקסדצימליים של קובץ שעבר ניקוי לאחר עיבוד על ידי OPSWAT MetaDefender

ארגונים עם תשתית אבטחת רשת מבוססת - בין אם הם משתמשים ב-WAFs (חומות אש של יישומי אינטרנט), פרוקסי או בקרי כניסה - יכולים כעת לשפר את מנגנוני ההגנה שלהם באמצעות MetaDefender ICAP Server פתרון זה יוצר ממשק בין שרתי אינטרנט קיימים לבין MetaDefender Core , יצירת נקודת בקרה שקופה עבור כל הקבצים הנכנסים. כל תוכן המנותב דרך ICAP הממשק ייסרק ויעובד לפני שהוא מגיע לשרת האינטרנט שלך, על מנת להבטיח שרק תוכן בטוח ולגיטימי ייכנס לרשת שלך ויגיע למשתמשי הקצה. 

תרשים המציג את האינטגרציה של ICAP Server עם NGINX המנוהל על ידי Kubernetes
MetaDefender ICAP Server משתלב עם NGINX

גישה זו מאפשרת לארגונים למנף את השקעות האבטחה הקיימות שלהם תוך הוספת שכבת הגנה נוספת וחזקה. ארגונים המשתמשים בבקר כניסה של NGINX יכולים לשלב MetaDefender ICAP Server עם התשתית הקיימת שלהם באמצעות תצורת פרוקסי.

קובץ תצורה המציג פוליגלוט PHAR/JPEG שעבר ניקוי באמצעות Deep CDR
קובץ הפוליגלוט הזדוני PHAR/JPEG עובר ניקוי על ידי Deep CDR ( MetaDefender Core )

OPSWAT הגישה של חורגת מעבר לגילוי איומים מסורתי. במקום פשוט לסמן קבצים חשודים, MetaDefender Core מנטרל באופן פעיל איומים פוטנציאליים, והופך קבצים מסוכנים לתוכן בטוח ושימושי. כאשר הוא משולב עם שרת האינטרנט שלך, MetaDefender ICAP Server מספק הגנה מקיפה מפני איומי יום אפס והתקפות רב-לשוניות. 

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

הישאר מעודכן עם OPSWAT !

הירשמו עוד היום כדי לקבל את העדכונים האחרונים של החברה, סיפורים, מידע על אירועים ועוד.