
תַקצִיר
בסוף שנת 2023, חוקרי אבטחה חשפו פגיעות משורשרת קריטית המשפיעה על ממשק המשתמש של Cisco IOS XE Web UI, ומאפשרת לתוקפים לא מאומתים להשיג שליטה מלאה במכשירים שנפגעו. שרשרת ההתקפה משלבת שתי פגיעויות אבטחה - CVE-2023-20198 ו- CVE-2023-20273 - שכאשר הן מנוצלות יחד, מובילות לביצוע פקודות ברמת ה-root על מארח לינוקס הבסיסי שבו פועל IOS XE. זה מאפשר השתלטות מלאה על המכשיר, גישה מתמשכת ותנועה רוחבית אפשרית על פני רשתות ארגוניות.
- CVE-2023-20198 : קיים ב-Cisco IOS XE Software בגרסאות 16.0.x עד 17.9.x, פגיעות זו מאפשרת לתוקפים לא מאומתים לקבל גישה ראשונית וליצור חשבון מנהל ברמת הרשאה 15 דרך ממשק המשתמש של האינטרנט. לאחר יצירתה, התוקף יכול לבצע כל פעולה ניהולית במכשיר, מה שמהווה סיכון אבטחה חמור.

- CVE-2023-20273 : פגיעות זו, המשפיעה על אותן גרסאות תוכנה, מאפשרת למשתמשים מאומתים עם הרשאות רמה 15 לבצע פקודות שרירותיות עם הרשאות root במערכת ההפעלה לינוקס הבסיסית, באמצעות פגם בהזרקת פקודות ברכיב ניהול התוכנה.

במהלך ה OPSWAT במסגרת תוכנית המלגות, עמיתינו, הואה ש. נגוין ונהאן נגוין, ערכו ניתוח טכני מעמיק של שרשרת תקיפה זו. במחקר שלנו, שחזרנו את הפגיעויות במתג Cisco Catalyst 9300-24T-E שמריץ IOS XE 17.01 , והדגמנו כיצד ניתן לשרשר את הפגמים יחד כדי להשיג פגיעה מלאה במערכת בתנאים אמיתיים.
רֶקַע
סקירה כללית של סיסקו IOS XE

Cisco IOS XE היא מערכת הפעלה מודרנית ומודולרית לרשת, המפעילה רבות מפלטפורמות הארגון של סיסקו - כולל נתבים, מתגים ובקרים אלחוטיים. היא משלבת את הפונקציונליות העשירה של Cisco IOS הקלאסי עם ארכיטקטורה מאובטחת יותר, ניתנת לתכנות ומבוססת לינוקס, ומעניקה למנהלי רשת גמישות וביצועים משופרים.
בליבתה, IOS XE פועלת כמערכת הפעלה לינוקס המארחת את התהליך הראשי הנקרא IOSd (IOS Daemon) . Daemon זה מטפל במשימות רשת מסורתיות כגון ניתוב, ניהול ממשק שורת פקודה (CLI) ובקרת תצורה. ב-IOS XE 17.01, הקובץ הבינארי של IOSd נמצא בכתובת /usr/binos/bin/x86_64_crb_linux_iosd_ngwc-universalk9-ms.
בניגוד למערכות סיסקו מדור קודם, משתמשי IOS XE שמתחברים דרך SSH ממוקמים בתוך מעטפת מוגבלת של תת-מערכת IOSd ולא בסביבת לינוקס הבסיסית. עיצוב זה מבודד את הגישה האמיתית ברמת הבסיס של מערכת ההפעלה, ומחזק משמעותית את גבול האבטחה הכולל בין אינטראקציות המשתמש לבין ליבת המארח.
רמות הרשאות של סיסקו
התקני סיסקו מיישמים מודל הרשאות היררכי כדי לשלוט בהרשאות משתמש:
- רמה 0 - גישה ברמה אפס: זוהי הרמה המוגבלת ביותר. היא בדרך כלל מאפשרת רק קבוצה מוגבלת של פקודות בסיסיות כגון יציאה, הפעלה, השבתה, עזרה ויציאה.
- רמה 1 - מצב EXEC של משתמש: גישת ברירת מחדל עבור כניסות סטנדרטיות, המאפשרת צפייה בסיסית במערכת אך ללא שינויי תצורה.
- רמה 15 - מצב EXEC מורשה: זוהי רמת ההרשאה הגבוהה ביותר ומעניקה שליטה מלאה על המכשיר. משתמשים ברמה זו יכולים לבצע את כל הפקודות, כולל פקודות תצורה, ויכולים לטעון מחדש את המכשיר.
ניתן להתאים אישית את הרמות הביניים (2-14) כדי להעניק הרשאות ספציפיות. הרשאות עוברות בירושה, כלומר משתמשים ברמות גבוהות יותר מקבלים אוטומטית את הזכויות של רמות נמוכות יותר.
ארכיטקטורת ממשק המשתמש של סיסקו
ממשק המשתמש של Cisco IOS XE Web מספק ממשק מבוסס דפדפן לניהול וניטור התקנים - ומציע תכונות תצורה ואבחון ללא צורך בגישה משורת הפקודה. באופן פנימי, ממשק המשתמש של האינטרנט ממנף את NGINX כתוכנת פרוקסי לניתוב בקשות משתמשים לשירותים פנימיים שונים, כולל סוכן ניהול שירותי אינטרנט (WSMA).
רכיב ה-WSMA משמש כגשר תקשורת בין ממשק המשתמש של האינטרנט לבין הדמון של IOSd הבסיסי, ומתרגם פעולות מבוססות אינטרנט לפקודות תצורה תואמות של IOS XE.

כדי לאכוף בקרת גישה, כל בקשה כפופה לאימות מבוסס SOAP ואימות הרשאות באמצעות כותרת HTTP ייעודית (Priv-Level), מה שמבטיח שרק משתמשים מורשים יוכלו לבצע פעולות הרשאות.

ניתוח טכני
CVE-2023-20198 - עקיפת אימות והסלמת הרשאות
עמיתינו גילו כי הפגיעות נעוצה בנקודת הקצה HTTP של ממשק המשתמש הרשתי (Web UI) של Cisco IOS XE. בעת עיבוד בקשות נכנסות, ממשק המשתמש הרשתי מעביר פקודות ואת הרשאות המשתמש הנלוות אליהן לנקודת קצה פנימית (/lua5), אשר לאחר מכן מנותבות על ידי NGINX לאחד משני מטפלי WSMA - /webui_wsma_http או /webui_wsma_https - בהתאם לפרוטוקול.


ניתוח סטטי של הקובץ הבינארי של IOSd מגלה גם תצורת NGINX הכוללת מטפל גיבוי ברירת מחדל:

הפגיעות נובעת מהאופן שבו NGINX ו- IOSd מטפלים בקידוד URL . שני הרכיבים מפענחים נתיבי URL באופן עצמאי, מה שמאפשר לתוקף לנצל עקיפת קידוד כפול .
לדוגמה, אם /webui_wsma_https נשלח כ- /%2577ebui_wsma_https , NGINX מבצע פענוח יחיד ורואה את /% 77ebui_wsma_https (שאינו תואם ישירות לנתיב הפנימי המוגן), כך שהוא שולח את הבקשה דרך מטפל חלופי פחות מגביל. כאשר הבקשה מגיעה לקצה האחורי של IOSd, IOSd מבצע פענוח שני ופותר את הנתיב אל /webui_wsma_https .

מכיוון ש-NGINX מנתב בתחילה את הבקשה הפגומה הזו באמצעות המטפל המוגדר כברירת מחדל , הוא נכשל באכיפת לוגיקת אימות ובקרת גישה רגילה. כתוצאה מכך, התוקף יכול להזריק כותרת Priv-Level מזויפת המקצה לעצמו הרשאות ברמת מנהל (15). בשילוב עם מטען XML של SOAP הנושא פקודה ליצירת משתמש חדש, הדבר גורם ליצירה שקטה של חשבון מקומי בעל הרשאות גבוהות.

ניצול לרעה זה אינו דורש אימות מוקדם ומספק לתוקף שליטה מלאה על תצורת המכשיר דרך ממשק המשתמש האינטרנטי - מה שמקים את השלב הראשון בשרשרת התקיפה.
CVE-2023-20273 - הזרקת פקודה ב Software הַנהָלָה
לאחר אימות באמצעות חשבון מנהל המערכת החדש שנוצר, התוקף יכול לנצל את CVE-2023-20273 , פגיעות של הזרקת פקודות ברכיב ניהול התוכנה (/webui/rest/softwareMgmt/*). נקודת קצה זו מיועדת למנהלי מערכת לגיטימיים להתקנה או עדכון של חבילות תוכנה במכשיר.
הפגם נובע מלוגיקת אימות הקלט בפונקציה validateSmuRequest(req), אשר קוראת ל- validator.validateIPv4IPv6HostNameAddress(req.ipaddress) כדי לאמת את כתובת ה-IP שסופקה בבקשה. שלב אימות זה נועד להבטיח שהכתובת שסופקה מעוצבת כראוי ובטוחה לשימוש.
בתוך validateIPv4IPv6HostNameAddress, האימות מסתמך על שגרת העזר utils.isIPv6Address(ip) כדי להעריך את תאימות התחביר של IPv6. פונקציה זו מנסה לנתח את הקלט על ידי פיצולו לנקודות נקודתיות (:) והערכת כל מקטע באמצעות ביטוי רגולרי שמטרתו לדחות תבניות הקסדצימליות לא חוקיות או ערכים מחוץ לטווח. פגם היישום טמון בביטוי רגולרי זה: עקב כימות * מתירני מדי, הוא תואם כל קלט, ובכך מאפשר למעשה לערכים פגומים או זדוניים לעבור אימות ללא בדיקה.

כתוצאה מכך, נתונים הנשלטים על ידי התוקף מתקבלים כתקפים וזורמים ללוגיקה במורד הזרם, שם הם משמשים בבניית פקודות. ערך כתובת ה-IP הלא מהימן משמש בסופו של דבר בתוך הפונקציה runPexecCommand() כדי לבנות פקודת מערכת שיוזמת בקשת TFTP. מכיוון שפעולה זו מתרחשת ללא אימות קלט או בריחה, תוקף יכול להזריק פקודות שרירותיות לתהליך, מה שמוביל להפעלת פקודה עם הרשאות מוגברות ופגיעה מלאה במכשיר Cisco.

הוכחת היתכנות (PoC)
במהלך ה OPSWAT בתוכנית המלגות, עמיתינו הואה ש. נגוין ונהאן נגוין שחזרו את הניצול המקושר במעבדה מבוקרת ומרווחת על גבי Cisco Catalyst 9300-24T-E עם מערכת הפעלה IOS XE 17.01. ניתן לסכם את רצף הניצול בשלבים הבאים:

- בקשת קידוד כפול: שליחת POST בעל מבנה מיוחד לנתיב פנימי בעל קידוד כפול (למשל, /%2577ebui_wsma_https) המנותב דרך גיבוי ה-proxy ומכיל כותרת Priv-Level מזויפת ומטען SOAP ליצירת חשבון.
- השגת סשן ניהול: התחבר עם החשבון שנוצר ואסוף אסימוני סשן/CSRF.
- העלאת מטען: השתמש בהעלאה של ממשק המשתמש באינטרנט כדי למקם את attacker_shell.sh במכשיר (פעולה של מנהל מערכת בלבד).
- ביצוע דרך SMU: שלח בקשת SMU עם כתובת ipad שנוצרה (למשל, 100:100:100:$(/bin/sh /bootflash/attacker_shell.sh )); האימות עוקף והסקריפט שהועלה מבוצע כ-root.

תיקון
סיסקו הוציאה גרסאות מתוקנות של Cisco IOS XE Software אשר מטפלים הן ב-CVE-2023-20198 והן ב-CVE-2023-20273. כל הארגונים המפעילים גרסאות מושפעות מ-16.0.x עד 17.9.x צריכים לשדרג באופן מיידי לגרסה המתוקנת האחרונה כפי שמתואר בייעוץ האבטחה הרשמי של סיסקו. יישום עדכונים אלה מסיר ביעילות את הפגיעויות הבסיסיות ומונע הסלמה בלתי מורשית של הרשאות או החדרת פקודות דרך ממשק המשתמש של האינטרנט.
עבור סביבות בהן שדרוג מיידי אינו אפשרי, על מנהלי מערכת להגביל או להשבית גישת ממשק משתמש אינטרנטי מרשתות לא מהימנות, לאכוף בקרות אימות מחמירות עבור ממשקי ניהול, ולנטר באופן רציף התנהגות חריגה של המערכת כגון יצירת חשבון לא מורשה או שינויי תצורה חריגים.
כדי לחזק את חוסן הסייבר הכולל, ארגונים יכולים להשלים את תיקוני הספקים עם פלטפורמת MetaDefender של OPSWAT , מסגרת אבטחה מאוחדת שנועדה להגן על תשתיות קריטיות על ידי זיהוי ומניעת איומים בקבצים, מכשירים וזרימת נתונים. MetaDefender לתוך זרימות עבודה ברשת ובתהליכי עבודה תפעוליים, משפר את הנראות, מבטיח בדיקת איומים מעמיקה יותר ומספק הגנה נוספת מפני ניסיונות ניצול פוטנציאליים המכוונים למערכות ניהול.
על ידי שילוב עדכונים בזמן של סיסקו, בקרות גישה חזקות ואסטרטגיית הגנה שכבתית הנתמכת על ידי MetaDefender פלטפורמה, ארגונים יכולים להפחית משמעותית את החשיפה לשרשראות פרצות דומות ולשמור על תנופת אבטחה חזקה ועמידה יותר.
