CVE-2025-8088 היא פגיעות מסוג "מעבר נתיבים" (path traversal) בתוכנת WinRAR, המשפיעה על גרסאות שקדמו לגרסה 7.13. ניצול פגיעות זו מאפשר לקובץ ארכיון שתוכנן במיוחד לעקוף את אימות שמות הקבצים והנתיבים במהלך חילוץ הארכיון, ולגרום לכתיבת תוכן הנשלט על ידי התוקף למיקומים ספציפיים בכונן NTFS. בתנאים מסוימים, ניתן לנצל יכולת כתיבה זו לביצוע קוד מרחוק.
עמיתי תוכנית המלגות OPSWAT של OPSWAT ביצעו ניתוח טכני של CVE-2025-8088. ממצאי הניתוח של מנגנוני RAR5 ו-NTFS (ADS) מתארים את תהליך החילוץ ואת מסלול הטיפול ב-ADS המובילים לכתיבה לא בטוחה, ומסכמים הנחיות מעשיות למניעה ולתיקון עבור אנשי מקצוע וארגונים בתחום אבטחת הסייבר.

מבוא ל-CVE-2025-8088
WinRAR היא אחת מתוכנות הדחיסה הנפוצות ביותר ב-Windows. היא תומכת בשימור ובשחזור של מטא-נתונים ספציפיים ל-NTFS, כגון ADS (Alternate Data Streams). הפגיעות CVE-2025-8088 קיימת בלוגיקת הטיפול ב-ADS בגרסאות ספציפיות של WinRAR. בגרסאות הפגיעות, ארכיון זדוני יכול להשפיע על מזהה הזרם המשמש במהלך החילוץ, כאשר נורמליזציה ואימות לא מספקים של הנתיב בתהליך יצירת ה-ADS מאפשרים מעבר בין ספריות.
הפגיעות CVE-2025-8088 מוגדרת כבעיה ברמת חומרה גבוהה, עם ציון בסיס CVSS v4.0 של 8.4 (גבוה), המעיד על פוטנציאל להשפעה משמעותית על האבטחה אם משתמש יחלץ ארכיון שתוכנן במיוחד באמצעות גרסה פגיעה של WinRAR.

רקע טכני
זרמי נתונים חלופיים ב-NTFS
NTFS (New Technology File System) היא מערכת הקבצים המוגדרת כברירת מחדל בגרסאות המודרניות של Windows. בהשוואה למערכות קבצים המבוססות על FAT, NTFS תומכת ביכולות מתקדמות, כולל רשימות בקרת גישה (ACL), הצפנת EFS, דחיסה, קישורים קשיחים, נקודות ניתוח מחדש (צמתים וקישורים סימליים) ו-ADS.
ADS היא תכונה של NTFS המאפשרת לקובץ או לספרייה בודדים להכיל מספר זרמי נתונים עצמאיים. התוכן הראשי, הנראה למשתמש, מאוחסן בזרם ברירת המחדל ללא שם, המוצג בדרך כלל כ-::$DATA, בעוד שניתן לגשת לזרמים נוספים בעלי שמות באמצעות התחביר:
שם_קובץ.sufix:שם_זרם
זרמים אלה, המכונים "זרמים חלופיים", אינם נראים בדרך כלל בתצוגות הרגילות של 'סייר Windows', אך הם נתמכים במלואם על ידי מערכת הקבצים וניתן לפרט אותם באמצעות כלים תומכים. לדוגמה,הפקודה dir/R יכולה להציג זרמים חלופיים.
WinRAR תומך בחילוץ פריטי ארכיון הכוללים תחביר ADS. כאשר קיימים פריטים כאלה בארכיון, WinRAR כותב את התוכן המתאים לזרם החלופי של הקובץ היעד במהלך החילוץ.

הבנת מבנה הקובץ RAR5
ארכיוני RAR5 מאוחסנים כשרשרת של בלוקים. כל בלוק מתחיל בכותרת המגדירה את סוג הבלוק ואת גודלו. הוא עשוי לכלול, באופן אופציונלי, אזור מטא-נתונים נוסף ואזור נתונים המורכב מביתות תוכן, כגון תוכן דחוס.
בלוק = כותרת + (אזור נוסף אופציונלי) + (אזור נתונים אופציונלי)
RAR5 משתמש במספר סוגי בלוקים. סוגי הבלוקים הרלוונטיים ב-CVE הם:
- כותרת הקובץ (סוג 2): מתארת רשומת קובץ בארכיון (שם/נתיב, תכונות, חותמות זמן, פרמטרי דחיסה) ואחריה מופיעים נתוני התוכן של הקובץ
- כותרת שירות (סוג 3): כותרות משלימות אופציונליות המאחסנות מטא-נתונים נוספים הקשורים לארכיון או לרישום קובץ ספציפי, כגון ADS
במערכת הקבצים NTFS, ADS מיוצגים על ידי כותרת שירות (סוג 3), המכונה STM. אזור הנתונים של כותרת השירות מכיל את בתים הזרם של ה-ADS עבור ערך הקובץ הבסיסי.
בצורה פשוטה:

ניתוח טכני (CVE-2025-8088)
תהליך חילוץ קבצי RAR5
WinRAR מעבד ארכיוני RAR5 כשרשרת של בלוקים. במהלך החילוץ, התוכנה עוברת על בלוקים אלה, מפרשת את כותרת כל בלוק ומאמתת את תקינות הכותרת באמצעות ה-CRC32 המוטמע לפני שהיא ממשיכה. לאחר עיבוד רשומת קובץ, WinRAR מבצע דחיסה וכותב את תוכן הקובץ הבסיסי לדיסק, ולאחר מכן קובע האם יש להחיל מטא-נתונים נוספים הקשורים ל-NTFS באמצעות רשומות שירות נלוות. כאשר קיים רשומת ADS (זרם נתונים חלופי), כגון רשומת שירות STM, WinRAR נכנס לנתיב הטיפול ב-ADS, משלב את נתיב הקובץ הבסיסי עם שם הזרם כדי ליצור את יעד ה-ADS, ויוצר את הזרם.

ב-CVE-2025-8088, הגורם העיקרי הוא שיצירת זרם ADS קוראת לפונקציית API של Windows API () תוך שימוש בנתיב הנגזר ממטא-נתונים הנשלטים על ידי הארכיון, מה שהופך את בניית/אימות נתיב ה-ADS לבלתי מספיקים כדי למנוע מעבר.
זיהוי נתיב הקוד של ADS ("STM")
הסטודנטים לתואר שני שלנו ביצעו שילוב של ניתוח סטטי ודינמי בסביבה מעבדתית מבוקרת באמצעות WinRAR 7.12. הם איתרו את הלוגיקה הקשורה ל-ADS באמצעות חיפוש אחר סמן השירות "STM" בקובץ הבינארי, ולאחר מכן אישרו את נתיב הקוד בצד החילוץ בזמן ריצה.

על ידי הצבת נקודת עצירה על ההפניה ל-"STM" המופיעה במהלך חילוץ ארכיון המכיל נתוני ADS, נקודת העצירה הופעלה באופן עקבי, מה שמאשר כי נתיב ביצוע זה מופעל במהלך תהליך החילוץ הרגיל.

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

ניתוח כותרות ואימות CRC32
WinRAR מעבד כל בלוק RAR5 על ידי קריאת כותרת הבלוק, אימות שדות השלמות והעברתו למטפל הספציפי לסוג הבלוק. נקודת הכניסה לעיבוד הבלוק והלוגיקה של ניתוח הכותרת הנלווית מוצגות באיורים 6–10, שם WinRAR קובע את מצביע הקובץ למיקום הבלוק הנוכחי, קורא את בתים הראשונים של הכותרת, הכוללים את סוג הכותרת וגודלה, ומאמת את שלמות הכותרת באמצעות CRC32 לפני שהוא ממשיך.
לאחר אימות מוצלח, הוא מפרש שדות כותרת נוספים, כגון דגלים, גודל לאחר פריקה, שיטת דחיסה ובדיקות סיכום אופציונליות. לאחר מכן, הוא מעבד את גוף הבלוק.



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

לאחר אימות כותרת ה-CRC32, המנתח ממשיך בחילוץ שאר פרטי הכותרת, כגון גודל הקובץ לאחר הפריקה, שיטת הדחיסה ותכונות נוספות.

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

ב-CVE-2025-8088, אימות תקינות הכותרת מתבצע לפני ש-WinRAR מעביר את הנתונים למטפל בלוק השירות המעבד רשומות ADS.
יצירת ADS באמצעות בלוק השירות ("STM")
נתיב העיבוד של ADS מופעל כאשר WinRAR נתקל בבלוק שירות. בלוקי שירות משתמשים בערך סוג הבלוק 3. כאשר מתגלה בלוק שירות, WinRAR מעביר אותו למטפל בכותרות שירות.

בתוך מטפל השירות, WinRAR בודק את שם השירות. כאשר שם השירות תואם ל-"STM", הרשומה מטופלת כנתוני ADS, והיישום עובר לשגרת יצירת ADS.

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


לאחר יצירת היעד, WinRAR יוצר את הזרם באמצעות פרוצדורה עזר המפעילה את API CreateFileW של Windows, ולאחר מכן כותבת את בתים ה-ADS באמצעות WriteFile. אם הנתיב שנוצר נמצא מחוץ לספריית החילוץ שנבחרה על ידי המשתמש, WinRAR תיצור את הזרם/הקובץ היעד ותמלא אותו בתוכן הנשלט על ידי התוקף.




לסיכום, תהליך החילוץ של ADS חושף שני תנאים בעלי השלכות על האבטחה. ראשית, שם זרם ה-ADS אינו עובר ניקוי מספיק, מה שמאפשר לרצפים חוצים להשפיע על נתיב היעד המתקבל. שנית, WinRAR יוצר את זרם ה-ADS באמצעות קריאה לפונקציית CreateFileW() עם נתיב הנגזר ממטא-נתונים הנשלטים על ידי הארכיון.
תנאים אלה, במצטבר, מאפשרים לארכיון שתוכנן בקפידה לכוון את היעד של CreateFileW() אל מחוץ לספריית החילוץ המיועדת, ולכתוב תוכן הנשלט על ידי התוקף למיקום הנמצא בשליטתו. אם היעד הוא ספרייה הרלוונטית להתמדה (למשל, תיקיית ה-Startup של המשתמש), פעולת כתיבה זו עשויה לאפשר ביצוע קוד המשך בעת הכניסה הבאה למערכת או בעת אתחול מחדש, בהתאם לסוג המטען ולתצורת המערכת.
תרחיש התקפה
ניתן לנצל את CVE-2025-8088 בפועל בתרחישים שבהם תוקף גורם למשתמש לחלץ ארכיון RAR שתוכנן במיוחד באמצעות גרסה פגיעה של WinRAR. אמצעי הפצה נפוץ הוא הנדסה חברתית, כגון פישינג, המוביל את הקורבן לסמוך על ארכיון זדוני ולהתחיל בחילוץ במערכת קריטית.
הארכיון משלב רשומת שירות ADS ("STM"). שם הזרם שלה בנוי באופן שמכניס סמנטיקה של מעבר. במהלך החילוץ ב-NTFS, WinRAR מעבד את רשומת ה-ADS ומפיק את נתיב הזרם היעד מתוך מטא-נתונים הנשלטים על ידי הארכיון. מכיוון שהבניית נתיב ה-ADS אינה מוגבלת מספיק, היעד שזוהה עלול להימצא מחוץ לספריית החילוץ שנבחרה על ידי המשתמש, כולל במיקומים קריטיים כגון תיקיית ההפעלה של המשתמש.

הוכחת היתכנות
כדי להדגים את CVE-2025-8088, עמיתנו לתואר שני הכינו קובץ ארכיון RAR שתוכנן במיוחד, המכיל רשומת שירות ADS ("STM") עם שדות הנשלטים על ידי התוקף. ארכיון זה בנוי עם שם זרם ADS הכולל רצפים חוצים. מבנה זה משפיע על מיקום היעד הסופי במהלך הטיפול ב-ADS, כולל הנתיב המועבר ל-CreateFileW() בעת יצירת הזרם. כדי להבטיח ש-WinRAR יקבל את המטא-נתונים שהשתנו ויגיע לנתיב עיבוד ה-ADS, ערכי ה-CRC32 של הכותרת הרלוונטיים מחושבים מחדש כך שהארכיון יעבור את אימות תקינות הכותרת.

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

תיקון
ניתן להפחית את הסיכון הנשקף מ-CVE-2025-8088 על ידי עדכון WinRAR לגרסה שתוקנה (7.13 ואילך) בכל נקודות הקצה המנוהלות. אם לא ניתן לבצע את העדכון במועד, יש לשקול אמצעי בקרה חלופיים, כגון:
- הגבלת או השבתת שמירת ADS בכלי הארכיון כאשר אין בכך צורך
- הגבלת חילוץ קבצי ארכיון לא מהימנים לסביבות מבודדות
- אכיפת עיקרון "הרשאות מינימליות" (הימנעות מהפעלת כלי חילוץ בהרשאות מוגבהות)
- ניטור ספריות קריטיות, כגון ספריות ההפעלה, לאיתור פעולות כתיבה בלתי צפויות שמקורן בתהליכי חילוץ קבצים מארכיונים
לצורך vulnerability detection מוקדם של vulnerability detection טיפול מהיר בהן, MetaDefender תומך בפעולות תיקון דחופות באמצעות זיהוי מכשירים המריצים גרסאות פגיעות של WinRAR והדגשת העדכונים הנדרשים. יכולות ניהול הפגיעויות והתיקונים החזקות שלו, התומכות ביותר מ-1,100 יישומים, מזהות באופן יזום נקודות קצה המריצות מערכות הפעלה ויישומים של צד שלישי ללא תיקונים או בגרסאות מיושנות, ומספקות את התיקונים המומלצים.
Vulnerability Management מאפשרת למנהלי מערכת לאתר במהירות נקודות תורפה, לקבוע סדר עדיפויות לתיקון הבעיות ולבצע שדרוגים לגרסה מתוקנת, ובכך להפחית את הסיכון להתקפות כתיבת קבצים המבוססות על ארכיונים, כגון CVE-2025-8088, ואיומים דומים המכוונים לנקודות קצה.

