בציון 10 מתוך 10 אין הרבה מה לפרש. זה המקסימום, והוא נשמר למצב שבו תוקף מרוחק שאין לו חשבון משיג שליטה על המכונה. זה מה שאפשרה חולשה במודול Ad Hoc Transfer של WS_FTP Server, שרת העברת הקבצים של Progress. היא נוצלה בשטח ונרשמה בקטלוג החולשות המנוצלות בפועל ב-5 באוקטובר 2023, שמונה ימים אחרי שהרשומה פורסמה.
מה החולשה?
כשתוכנה צריכה להעביר אובייקט מהזיכרון שלה למקום אחר, היא שוטחת אותו לרצף בתים: טיפוס, שדות, ערכים. בצד המקבל הרצף נפרס חזרה לאובייקט חי. זה מנגנון שימושי ונפוץ, ויש לו תנאי אחד שחייב להתקיים: שהצד המקבל יידע שמי ששטח את האובייקט הוא גורם שמותר לו לעשות זאת.
במודול Ad Hoc Transfer התנאי הזה לא נבדק. המודול קיבל רצף בתים מפונה שלא התחבר ולא הזדהה ופרס אותו, וביניהם גם תיאור של אובייקט שעצם הבנייה שלו מפעילה קוד. התוקף לא שלח פקודה אל השרת. הוא שלח מתכון, השרת בנה לפיו אובייקט, ובדרך הריץ את מה שהיה בתוכו. לסוג הכשל הזה קוראים deserialization של נתונים שאינם מאומתים, בסיווג CWE-502, וכאן הוא בגרסה של סביבת .NET.
למודול שבו היא יושבת יש משמעות. Ad Hoc Transfer הוא החלק שמאפשר לשלוח קובץ למי שאין לו חשבון בשרת, ולכן מטבעו הוא פונה אל העולם שבחוץ. מה שעבר ממנו הלאה היה הרצת פקודות על מערכת ההפעלה שמתחת לשרת, לא רק בתוך השרת, וזאת הסיבה שהציון מודד גם פגיעה שעוברת מעבר לרכיב הפגיע עצמו.
מי מושפע?
מושפעות גרסאות WS_FTP Server שקודמות ל-8.7.4, וגרסאות ענף 8.8 שקודמות ל-8.8.2. שרת כזה יושב בארגונים שמעבירים קבצים עם גורמים חיצוניים, לקוחות, ספקים ורשויות, ולרוב הוא נגיש מהאינטרנט מפני שזה כל תפקידו. גולש פרטי אינו מתקין אותו.
הרשומה היא משנת 2023 והתיקון זמין מאז. מי שמריץ היום גרסה שקודמת ל-8.7.4 אינו מתמודד עם חולשה חדשה, הוא מריץ שרת שהדרך לנצל אותו מתועדת בפומבי כבר שנים.
האם מנוצלת בפועל?
כן. החולשה נוספה ב-5 באוקטובר 2023 לקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, הרשימה שמאגדת חולשות שיש עליהן ראיות לניצול בשטח, והמועד שנקבע לגופים הפדרליים לסיים את התיקון היה 26 באוקטובר 2023.
מעבר לקטלוג, המקורות שברשומה כוללים ניתוח טכני של Assetnote ורשומת ניצול פומבית. כלומר לא מדובר בחולשה שרק היצרן מכיר. מי שרוצה לנצל אותה אינו צריך לחקור דבר.
מה עושים?
אם יש לכם WS_FTP Server, בדקו קודם איזו גרסה רצה. בענף 8.7 התיקון הוא 8.7.4 ובענף 8.8 הוא 8.8.2, וכל גרסה מאוחרת מהן כוללת אותו. הודעת האבטחה של Progress מפרטת מה נדרש לכל ענף.
בדקו אם המודול Ad Hoc Transfer מופעל אצלכם, ואם אתם בכלל משתמשים בו. זה הרכיב שבו החולשה יושבת, ומודול שאיש אינו צריך ושעדיין פועל אינו קונה לכם כלום. לפני שאתם משנים תצורה, קראו מה היצרן אומר על כך באותה הודעה.
שרת שהיה נגיש בגרסה פגיעה דורש בדיקה ולא רק עדכון. חפשו ביומנים העלאות וקבצים שנוצרו בנתיבי השרת בלי שאיש אצלכם עשה זאת, חשבונות ניהול שנוספו, ותהליכים שעולים מתוך תיקיות השרת. עדכון סוגר את הפתח, הוא אינו מוציא מי שכבר נכנס דרכו.