קבצי תמונה נחשבים בדרך כלל לקבצים בטוחים ולעתים קרובות מטופלים ללא מודעות לבעיות אבטחה פוטנציאליות. קבצי תמונה אלה, במיוחד קבצי SVG, הם וקטורי תקיפה נפוצים להפעלת התקפות מסוכנות כגון Cross-Site Scripting (XSS) או הזרקת ישות חיצונית של XML (XXE). בניגוד להתקפות XSS, התקפות הזרקת XXE אינן משפיעות על צד הלקוח, אך הן עלולות להשפיע באופן משמעותי על צד השרת, מה שמוביל למספר השפעות חמורות. בפוסט בבלוג זה, נחקור את אופי התקפות XXE באופן ספציפי באמצעות וקטור תקיפה של גרפיקה וקטורית ניתנת להרחבה (SVG) , נדון בדוגמה מהעולם האמיתי ונספק אסטרטגיות הפחתה עם... OPSWAT מוצרים.
מידע רקע
לפני שנעמיק בנקודה הפגיעות, נבחן תחילה את פורמט הקובץ XML ו-SVG ואת שורש טכניקת הזרקת XXE.
פורמט קובץ XML
XML (eXtensible Markup Language) הוא פורמט קובץ שאינו תלוי בפלטפורמה לאחסון והחלפה של נתונים מובנים. XML תומך במבנה היררכי, מה שהופך אותו לאידיאלי לייצוג קשרי נתונים מורכבים. נתונים בפורמט XML מאורגנים בתגיות, תכונות ותוכן, באותו אופן כמו HTML. עם זאת, XML ניתן להתאמה אישית והרחבה רבה, מה שמאפשר למשתמשים להגדיר את התגיות והתכונות שלהם בהתאם לדרישותיהם. האיור שלהלן מציג את נתוני מחלקת ה-IT בפורמט XML.

ישויות XML
ב-XML, ישויות הן מצייני מיקום עבור נתונים המאפשרים לך להטמיע טקסט או מסמכים שלמים במסמך הנוכחי. מבחינה תחבירית, ישות ב-XML מוקפת בסימן אמפרסנד (&) ובנקודה-פסיק (;). בדוגמה שלהלן, שתי ישויות מוגדרות בהגדרת סוג המסמך ומתייחסות לתוכן קובץ ה-XML. ההבדל בין שתי הישויות הוא שהישות הפנימית מוגדרת ומופנית בתוך המסמך הנוכחי, בעוד שתוכן הישות החיצונית מגיע ממסמך חיצוני. לאחר ניתוח ופתרון הישויות, הישויות מוחלפות בנתונים המתאימים.
פורמט קובץ SVG
SVG (גרפיקה וקטורית ניתנת להרחבה) הוא פורמט קובץ רב-תכליתי המשמש בהרחבה בפיתוח אתרים, עיצוב גרפי והדמיית נתונים. שלא כמו פורמטים מסורתיים של תמונות כמו JPEG או PNG, SVG משתמש בפורמט XML כדי לתאר גרפיקה וקטורית דו-ממדית. באופן ספציפי, תמונות SVG מורכבות מצורות גיאומטריות כמו קווים, עקומות ופוליגונים, המוגדרים על ידי משוואות מתמטיות ולא על ידי פיקסלים בודדים. כתוצאה מכך, ניתן לשנות את קנה המידה של גרפיקת SVG ללא הגבלה מבלי לאבד איכות, מה שהופך אותן לאידיאליות לעיצוב אתרים רספונסיבי ותצוגות ברזולוציה גבוהה. בשל אופי ה-XML של פורמט SVG, הוא מספק גם וקטורי תקיפה פוטנציאליים עבור פרצות הקשורות ל-XML.

טכניקת הזרקת XXE והשפעותיה
טכניקת הזרקת XXE מנצלת לרעה את מנגנון פתרון הישויות החיצוניות. באופן ספציפי, כאשר המנתח פוגש ישות חיצונית, הוא יאחזר את התוכן המתאים בהתבסס על סוג קובץ המשאבים.
אם קובץ המשאבים הוא מקומי, המנתח יאחזר את תוכן הקובץ ויחליף את הישות בנתונים המתאימים. פעולה זו תאפשר לתוקף להציג נתונים רגישים כגון תצורת שרת, אישורים וכו'. כדי לנצל בהצלחה את הפגיעות, התוקף מצהיר על ישות חיצונית המתייחסת לתוכן של קבצים רגישים, לדוגמה /etc./password.
עם זאת, אם המשאב מרוחק או שירות פנימי, המנתח ינסה לאחזר את הנתונים על ידי בקשת כתובת ה-URL שהוגדרה. ניתן לנצל זאת לביצוע זיוף בקשות בצד השרת (SSRF). במקרה זה, במקום להפנות לקובץ מקומי, התוקף ישנה את המטען לכתובת ה-URL של השירות הפגיע כדי לבקש בשם השרת.
מתקפת XXE באמצעות טיפול לקוי בקובץ SVG: מקרה בוחן
נחקור XXE עבור מקרה מהעולם האמיתי, ספריית SVGLIB עד גרסה 0.9.3. הפגיעות התגלתה בשנת 2020 והוקצתה לה CVE-2020-10799 . תחילה נבחן את זרימת הספרייה, ננתח את קטע הקוד הפגיע, ולבסוף נוכיח את הניצול באמצעות שירות המרת SVG ל-PNG. המטרה היא יישומי אינטרנט המיושמים באופן עצמאי המשתמשים בגרסאות SVGLIB פגיעות לצורך ההמרה.
חבילת svglib
svglib היא ספריית Python טהורה שנועדה להמיר פורמט SVG לפורמטים אחרים כגון PNG, JPG, PDF וכו' באמצעות ערכת הכלים של Report Lab Open-Source. מכיוון שקבצי SVG משתמשים בפורמט XML, ניתוח וטיפול ב-XML הם גם חלק רלוונטי מהזרימה העיקרית של הספרייה. שלושת השלבים העיקריים בספרייה הם כדלקמן:

ניצול
הפגיעות טמונה בתהליך ניתוח קובץ ה-SVG. אם הוא מוגדר באופן שגוי, הוא ידלף נתונים רגישים בשרת ועלול לגרום לפגיעויות SSRF. בבדיקה נוספת של קוד המקור של חבילת svglib, הפגיעות XXE נגרמת עקב שימוש בתצורת ברירת המחדל לניתוח וטיפול בפורמט XML בעת טעינת קובץ ה-SVG. החבילה השתמשה בחבילת lxml , שבה ערך ברירת המחדל עבור התכונות resolve_ entities עבור המחלקה XMLParser הוא True .


תיקון
שורש הבעיה הוא ניתוח XML לא מאובטח, המיושם באופן שגוי בספריית svglib והוא חלק מתלות lxml. כתוצאה מכך, שימוש בגרסה פגיעה של ספרייה זו עלול לגרום לחשיפת מידע רגיש, זיוף בקשות בצד השרת, או אפילו ביצוע קוד מרחוק אפשרי, בהתאם לסביבה הפרוסה ולפונקציונליות של היישום. פגיעות שמוצגת מספריות של צד שלישי היא בעיה חמורה לאבטחת היישומים הגדולים מכיוון שהתלות שלהם עשויה להיות מורכבת ולא שקופה.
MetaDefender Software Supply Chain
Supply Chain Software OPSWAT MetaDefender מספקת נראות מורחבת והגנה חזקה מפני סיכוני שרשרת האספקה באמצעות שילוב של טכנולוגיות מרובות. OPSWAT Software Bill of Materials (SBOM) מסייע לקבל נראות לחבילות תוכנה בקוד פתוח של צד שלישי ולזהות תלויות תוכנה, פגיעויות או סיכונים פוטנציאליים אחרים הקיימים מתחת לכל שכבה של תמונת מכולה. עם שילוב של יותר מ-30 מנועי אנטי-וירוס יחד, שיעור זיהוי תוכנות זדוניות של טכנולוגיית Multiscanning מגיע ליותר מ-99.99%. יתר על כן, טכנולוגיית Proactive DLP (מניעת אובדן נתונים) מזהה אישורים כגון סיסמאות, סודות, טוקנים, API מפתחות, או מידע רגיש אחר שנותר בקוד המקור. בעזרת טכנולוגיות זיהוי ומניעת איומים ללא אמון, מחזור חיי פיתוח התוכנה (SDLC) שלך מוגן מפני תוכנות זדוניות ופגיעויות, מחזק את אבטחת היישומים ואת עמידה בתאימות.


MDSSC מזהה את ה-CVE שנמצא ב-svglib. הוא גם מסמן את רמת החומרה של ה-CVE בדוח SBOM ומזהה את גרסת התוכנה הפגיעה.
MetaDefender Core - Deep CDR
סיבה נוספת שמאפשרת את הניצול היא שהאפליקציה מעבדת קובץ SVG שהוזרק אליו מטען זדוני. כתוצאה מכך, אם קובץ התמונה עובר חיטוי לפני הזנתו לשירות ההמרה, המטען יבוטל, מה שימנע את התרחשות ההתקפה. טכנולוגיית Deep Content Disarm and Reconstruction (CDR) ב... MetaDefender Core מגן מפני איומים ידועים ולא ידועים שמקורם בקבצים על ידי ניקוי ושחזור קבצים. עם תמיכה ביותר מ-160 סוגי קבצים נפוצים ומאות אפשרויות לשחזור קבצים, OPSWAT של Deep CDR מנטרל כל איום מוטמע פוטנציאלי, ומבטיח שהקובץ שעבר ניקוי ישמור על שימושיות מלאה עם תוכן בטוח.



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


