קבצי תמונה נחשבים בדרך כלל לקבצים בטוחים ולעתים קרובות מטופלים ללא מודעות לבעיות אבטחה פוטנציאליות. קבצי תמונה אלה, במיוחד קבצי 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
OPSWAT MetaDefender Software Supply Chain מספקת נראות מורחבת והגנה איתנה מפני סיכוני שרשרת האספקה באמצעות שילוב של טכנולוגיות מרובות.Bill of Materials (SBOM) Software Bill of Materials (SBOM) להשיג נראות לחבילות תוכנה של צד שלישי בקוד פתוח ולזהות תלות בתוכנה, נקודות תורפה או סיכונים פוטנציאליים אחרים הקיימים בכל שכבה של תמונת קונטיינר. בזכות שילוב של יותר מ-30 מנועי אנטי-וירוס, שיעור זיהוי התוכנות הזדוניות של Multiscanning מגיע ליותר מ-99.99%. בנוסף, טכנולוגייתProactive DLP מניעת אובדן נתונים)Proactive DLP מזהה פרטי הזדהות כגון סיסמאות, סודות, אסימונים, API או מידע רגיש אחר שהושאר בקוד המקור. באמצעות טכנולוגיות זיהוי ומניעת איומים מבוססות "אמון אפס" (zero-trust), מחזור חיי פיתוח התוכנה (SDLC) שלכם מוגן מפני תוכנות זדוניות ונקודות תורפה, מה שמחזק את אבטחת היישומים ואת עמידתם בדרישות התאימות.


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



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


