
העלייה המהירה של הטכנולוגיה יצרה ביקוש גבוה למפתחים מיומנים. תוכנה בקוד פתוח (OSS) הפכה לכלי חיוני עבור כוח עבודה הולך וגדל זה. מאות אלפי חבילות OSS מבוססות קיימות כיום בשפות תכנות שונות. למעלה מ-90% מהמפתחים ממנפים רכיבי קוד פתוח אלה בתוך היישומים הקנייניים שלהם, דבר המדגיש את היעילות והצעת הערך של OSS. תוך הדגשת חשיבותו של שוק התוכנה בקוד פתוח העולמי צפוי להגיע ל-80.7 מיליארד דולר עד 2030, המשקף קצב צמיחה צפוי של 16.7% בשנה.
Software הוא חלק בלתי נפרד מפעילות עסקית ברחבי העולם ולכן הוא מטרה תכופה על ידי גורמי איום. בשנת 2023, ההוצאות על אבטחת יישומים הסתכמו בכ-5.76 מיליארד דולר, כאשר התחזיות יגיעו ל-6.67 מיליארד דולר בשנת 2024. בתוך AppSec, אבטחת שרשרת האספקה של תוכנה צברה חשיבות בשלוש השנים האחרונות, ומייצגת את קטגוריית ההתקפות הצומחת ביותר, כאשר פרצות וניצול לרעה גדולים עולים לכותרות באופן קבוע.
ארגונים מניחים לעתים קרובות שרוב הסיכונים נובעים מיישומי אינטרנט הפונים לציבור. עם זאת, נקודת מבט זו השתנתה בשנים האחרונות. עם עשרות רכיבים קטנים בכל יישום, סיכונים יכולים כעת לצוץ מכל מקום בתוך בסיס הקוד. חשוב מתמיד שארגונים יכירו את פגמי האבטחה הקיימים והמתפתחים במחזור חיי פיתוח התוכנה. בפוסט בבלוג זה, עמיתינו הבוגרים מספקים מבט מקרוב על CVE-2023-23924, פגם אבטחה קריטי שהתגלה בספריית dompdf הנפוצה - כלי PHP רב עוצמה המאפשר יצירה דינמית של מסמכי PDF מ-HTML ו-CSS.
באמצעות ניתוח מקיף, נחקור את המורכבויות הטכניות של פגיעות זו, את הטכנולוגיות הקשורות שממלאות תפקיד מכריע, וסימולציה של תהליך הניצול. נבחן גם כיצד ניתן למנף OPSWAT MetaDefender Core , ובמיוחד את מנוע Software Bill of Materials (SBOM) שלו, כדי לזהות ולמתן פגיעות זו, ובכך להעצים מפתחי תוכנה וצוותי אבטחה להישאר צעד אחד לפני איומים פוטנציאליים.
רקע על CVE-2023-23924
פגיעות אבטחה התגלתה בגרסה 2.0.1 של dompdf ופורסמה בתחילת 2023:
- ניתן לעקוף את אימות ה-URI ב-dompdf 2.0.1 בניתוח SVG על ידי העברת
<image>תגיות עם אותיות גדולות. זה מאפשר לתוקף לקרוא לכתובות URL שרירותיות עם פרוטוקולים שרירותיים, מה שמוביל לביטול סידור שרירותי של אובייקטים בגרסאות PHP לפני 8.0.0. דרך עטיפת ה-URL של PHAR, פגיעות זו עלולה לגרום למחיקת קבצים שרירותית ואף לביצוע קוד מרחוק, בהתאם למחלקות הזמינות. - אנליסטים של NVD העניקו ציון CVSS של 9.8 CRITICAL ל-CVE-2023-23924.

הבנת הפגיעות של Dompdf
כדי להבין באופן מלא את הפגיעות CVE-2023-23924 בקובץ dompdf, חיוני להכיר שתי טכנולוגיות קשורות זו לזו: גרפיקה וקטורית ניתנת להרחבה (SVG) וקבצי PHAR.
SVG (גרפיקה וקטורית ניתנת להרחבה) הוא פורמט תמונה רב-תכליתי שצבר פופולריות רבה בזכות יכולתו לעבד גרפיקה באיכות גבוהה באינטרנט תוך שמירה על משקל קל וניתנת להרחבה. בניגוד לתמונות רסטר, קובצי SVG מבוססים על סימון XML, המאפשר שליטה מדויקת על אלמנטים כמו קווים, צורות וטקסט. אחד היתרונות המרכזיים של קובצי SVG הוא יכולתם להתאים לגודל חלק מבלי לאבד איכות תמונה, מה שהופך אותם לאידיאליים לעיצוב אתרים רספונסיבי ולתצוגות ברזולוציה גבוהה.

PHAR (ארכיון PHP) דומה לקונספט של קובץ JAR אך עבור PHP. הוא מאפשר פריסה קלה על ידי איחוד כל קוד ה-PHP וקובצי המשאבים לקובץ ארכיון יחיד.
קובץ PHAR מורכב מ-4 חלקים:
- Stubs: מכיל את הקוד לאתחול הארכיון.
- מניפסט: מכיל את המטא-דאטה של הארכיון. המטא-דאטה מאוחסנים בפורמט סידורי, אשר יכול לשמש להפעלת מתקפה נטולת סידורי של PHP בקובץ PHAR זדוני.
- תוכן הקובץ: מכיל את תוכן הארכיון, כולל קוד PHP וקבצי משאבים.
- חתימה (אופציונלי): מכילה נתונים לאימות שלמות הקובץ.
עקב אחסון המטא-דאטה בפורמט סידורי, השילוב של עטיפת PHAR והמטא-דאטה של קובץ PHAR עלול לגרום להתקפת ביטול סידור כאשר משתמשים בה כקלט בפונקציות PHP כגון file_get_contents(), fopen(), file(), file_exists(), md5_file(), filemtime(), אוֹ גודל קובץ ()פיקוח אבטחתי זה עלול לאפשר לתוקפים לבצע קוד מרחוק באמצעות קובץ PHAR.

כיצד Dompdf יוצר קובץ PDF

באמצעות ניתוח, OPSWAT סטודנטים לתואר שני מזהים שלושה שלבים בתהליך ההמרה ב-dompdf. כדי להמיר קובץ HTML לפורמט PDF, ספריית dompdf מנתחת תחילה את קובץ הקלט לעץ DOM ומאחסנת את פרטי המיקום והפריסה של כל אובייקט. לאחר מכן, עיצוב ה-CSS מנותח ומוחל על כל אובייקט. לבסוף, האובייקטים מאורגנים מחדש כך שיתאימו לדף ומוצגים בקובץ PDF הסופי.
כדי לשפר את האבטחה, dompdf מיישם אימות כדי להבטיח את בטיחות קלט ה-URI לפני המשך לשלב הבא. תהליך אימות זה ניכר במהלך עיבוד קובץ SVG בתוך הערך של קישור:href תְכוּנָה.

אם קובץ הקלט SVG מכיל את <image> תגית מתחת ל- <svg> תג, תנאי מיושם כדי לאפשר רק פרוטוקולים מסוימים, כגון http://, https:// ו file://, עבור ה- קישור:href שָׂדֶה.

ה resolve_url() הפונקציה תאמת את ה-URI לפני עיבודו עם ציורImage() פונקציה. אם הסכימה ב-URI אינה בין הפרוטוקולים המותרים, ה- resolve_url() הפונקציה תחזיר חריג ליישום.

אם ה-URI עובר את האימות, הוא יועבר אל ציורImage() פונקציה, אשר משתמשת ב- קובץ_get_contents() פונקציה לטיפול בערך ה-URI בתוך קישור:href תכונה. פגיעות האבטחה מתעוררת בנקודה זו: התקפת ביטול סידור PHAR עלולה להיות מופעלת אם תוקף יוכל לעקוף את האימות ולהעביר מעטפת PHAR לתוך ה-URI.
לאחר הניתוח, מתגלה שהאימות נאכף רק על תגיות עם תמונת השם המדויקת.

כתוצאה מכך, ניתן לעקוף זאת בקלות על ידי הוספת תו אחד או יותר באות גדולה בשם התג, כגון תמונה. כתוצאה מכך, קובץ SVG שנוצר במיוחד המשתמש ב-Image במקום ב-image עלול להתחמק מאימות זה.
בשלב הבא, ה- ציורImage() הפונקציה מופעלת, ומעבירה את ה-URI מקובץ ה-SVG אל קובץ_get_contents() פונקציה. לכן, השילוב של עקיפת האימות והתקפת ביטול סידור על קובץ PHAR מאפשר לתוקף לבצע ביצוע קוד מרחוק. פגיעות זו פותחת את הדלת לתוקף זדוני לפגוע בשרת היישומים באמצעות קובץ SVG אם הוא מטופל על ידי גרסה פגיעה של dompdf.
סימולציית ניצול של Dompdf
כדי לדמות ניצול זה כתרחיש אמיתי, OPSWAT עמיתים מתקדמים פיתחו יישום אינטרנט הכולל המרה מ-HTML ל-PDF באמצעות ספריית dompdf גרסה 2.0.1. יישום זה מאפשר למשתמשים להעלות סוגי קבצים כגון HTML, XML או SVG, ולאחר מכן להמיר אותם לקבצי PDF.

תוקף יבצע את השלבים הבאים כדי לנצל פגיעות זו ביישום המשתמש בגרסת dompdf פגיעה (גרסה 2.0.1):

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

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

בסופו של דבר, התוקף מטמיע את קישור ה-URI המכיל את עטיפת ה-PHAR לתוך הערך של קישור:href התכונה בתג Image כדי לעקוף את האימות, להפעיל קוד זדוני ולהעלות את הקובץ הזדוני הזה ליישום.

במהלך עיבוד קובץ ה-SVG הזדוני שהועלה, האפליקציה יוצרת חיבור הפוך לתוקף, מה שמאפשר לו לפרוץ לשרת האפליקציות.

אבטחת רכיבי קוד פתוח עם OPSWAT MetaDefender Core
כדי לזהות ולמתן את הפגיעות CVE-2023-23924 ב-dompdf, עמיתינו לתואר שני השתמשו OPSWAT MetaDefender Core , מוצר אבטחת סייבר רב-שכבתי המציע טכנולוגיות מתקדמות למניעה וזיהוי של תוכנות זדוניות, כולל SBOM.
OPSWAT SBOM מאבטחת את שרשרת האספקה של התוכנה על ידי אספקת מלאי רכיבים מקיף עבור קוד מקור ומכולות. על ידי ניתוח ספריית dompdf והתלויות שלה, OPSWAT SBOM יכול לזהות במהירות את נוכחותה של גרסה 2.0.1 הפגיעה ולהתריע בפני המשתמשים על הסיכון הפוטנציאלי.
בְּנוֹסַף, OPSWAT SBOM יכול לזהות טכנולוגיות קשורות, כגון קבצי SVG ו-PHAR, החיוניות להבנה ולמיתון הפגיעות CVE-2023-23924. מבט הוליסטי זה של רכיבי התוכנה של האפליקציה מאפשר לצוותי אבטחה לקבל החלטות מושכלות ולנקוט בפעולות מתאימות כדי לטפל בסיכונים שזוהו.

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

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




