העדכון שאתם לא יכולים להרשות לעצמכם לדלג עליו: סוף התמיכה ב-Office 2016 ו-Office 2019

קרא עכשיו
אנו משתמשים בבינה מלאכותית לתרגום האתר, ועל אף שאנו שואפים לדיוק מרבי, ייתכן שהתרגומים אינם מדויקים במאת האחוזים. אנו מודים לך על ההבנה.

CVE-2024-36401 ב-GeoServer בקוד פתוח חושף מערכות לביצוע קוד מרחוק

עַל יְדֵי OPSWAT
שתף את הפוסט הזה
צילומי ראש של OPSWAT משתתפי תוכנית המלגות
OPSWAT משתתפי תוכנית המלגות

בבלוג זה, נחקור את CVE-2024-36401 - פגיעות אבטחה שנמצאה ב-GeoServer, שרת מבוסס ג'אווה בקוד פתוח המשמש באופן נרחב לניהול ושיתוף נתונים גיאו-מרחביים. פגיעות זו, אשר עלולה לאפשר ביצוע קוד מרחוק (RCE) על ידי משתמשים לא מאומתים, מדגישה את החשיבות הקריטית של תיקון פריסות GeoServer בהקדם האפשרי. 

בניתוח האבטחה האחרון שלנו, שניים OPSWAT עמיתים לתארים מתקדמים חוקרים איום זה על ידי:

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

איור המייצג ניתוח פגיעויות של GeoServer

סקירה כללית של GeoServer

GeoServer הוא שרת קוד פתוח מבוסס ג'אווה, המיועד לצפייה, עריכה ושיתוף של נתונים גיאו-מרחביים. GeoServer, שהושק לראשונה בשנת 2001 על ידי TOPP (פרויקט התכנון הפתוח), פותח כדי לשפר את מעורבות הציבור בתכנון ממשלתי ועירוני באמצעות חילופי נתונים מרחביים פתוחים. למעלה משני עשורים לאחר מכן, GeoServer התבגר לפלטפורמה חזקה המסוגלת לטפל בפורמטים שונים של נתונים מרחביים ולשלב עם מקורות נתונים שונים.

GeoServer מספקת שירותים המבוססים על תקני OGC (קונסורציום גיאו-מרחבי פתוח) , כולל:

  • WFS (שירות תכונות אינטרנט) – מאפשר יצירה, שינוי והחלפה של מידע גיאוגרפי בפורמט וקטורי באמצעות HTTP
  • WCS (שירות כיסוי רשת) – מאפשר גישה לנתוני רסטר (למשל, תמונות לוויין) לצורך מידול וניתוח מורכבים.
  • WMS (שירות מפות אינטרנט) – מספק ממשק HTTP פשוט לבקשת תמונות מפה.

רקע על CVE-2024-36401

CVE-2024-36401 משפיע על גרסאות GeoServer קודמות ל-2.25.2, 2.24.4 ו-2.23.6. הליקוי נובע מהערכה לא בטוחה של שמות מאפיינים כביטויי XPath על פני פרמטרים מרובים של בקשות OGC. תוקפים יכולים לנצל פגם זה כדי ליצור RCE (ביצוע קוד מרחוק) על ידי הזרקת קלטים בעלי מבנה (crafted inputs) בהתקנת GeoServer ברירת מחדל.

 לפי יועצי האבטחה של GitHub, פגיעות זו נושאת ציון CVSS גרסה 3.1 של 9.8 (קריטי). 

צילום מסך של מדדי ציון בסיסיים של CVSS המשמשים להערכת פגיעויות תוכנה

התכונות הפשוטות לעומת המורכבות של GeoServer

GeoServer תומך בסוגי מאפיינים פשוטים ומורכבים כאחד כדי להתאים למבני נתונים גיאו-מרחביים שונים, החל ממערכי נתונים שטוחים ועד מערכי נתונים מורכבים ומקוננים. עם זאת, הטיפול הפגום בביטויי XPath על פני סוגי נתונים אלה הוא שהופך את CVE-2024-36401 לניתן לניצול.

תכונות פשוטות

סוגי מאפיינים פשוטים מייצגים נתונים גיאו-מרחביים פשוטים בפורמט שטוח, שבו כל שורה במסד נתונים מתאימה לתכונה גיאו-מרחבית; וכל תכונה ממופה ישירות לאלמנט XML. 

לדוגמה, טבלה המייצגת חברות עם עמודות כמו מזהה, שם ומיקום ניתנת להמרה בקלות לתכונות XML פשוטות.

תְעוּדַת זֶהוּתשֵׁםמִקוּם
1OPSWATנקודה (10.769829, 106.685248)
מיפוי תכונות פשוט של GeoServer משורות מסד נתונים לאלמנטי XML

תכונות מורכבות

לעומת זאת, סוגי מאפיינים מורכבים מטפלים בנתונים מורכבים יותר. סוג מאפיינים זה תומך במאפיינים מקוננים ובקשרים בין מערכי נתונים שונים. סכמות מורכבות אלו אינן נוצרות באופן אוטומטי, אלא מוגדרות באמצעות סטנדרטים קהילתיים, כפי שמתואר בהרחבת Application Schema של GeoServer.

דוּגמָה: 

מתחת לטבלת החברות הקודמת, נוסיף מפתח זר gu_id כדי לתאר את הקשר בין חברה ליחידה הגיאולוגית המקבילה שלה:

תְעוּדַת זֶהוּתשֵׁםמִקוּםgu_id
1OPSWATנקודה (10.769829, 106.685248)12

מידע היחידה הגיאולוגית מאוחסן בנפרד בטבלה יחידה גיאולוגית:

gu_idמֵיחָםתֵאוּר
12urn:x-demo:feature:GeologicUnit:12גנייס מטמורפי

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

יחסי יחידות גיאולוגיות מקוננות בתכונות מורכבות של GeoServer

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

כיצד נוצרת הפגיעות

GeoServer נועד להשתמש בהערכת XPath כדי לעבד סוגי מאפיינים מורכבים (כגון אלו הנמצאים במאגרי נתונים של Application Schema). אך עקב טיפול לא נכון, הוא מיישם בטעות הערכת XPath גם על סוגי מאפיינים פשוטים. זה יוצר וקטור תקיפה מכיוון ש:

  1. GeoServer מסתמך על ספריית GeoTools כדי להעריך שמות מאפיינים במהלך אחזור נתונים.
  2. ה commons-jxpath לספרייה, המשמשת לעיבוד ביטויי XPath, חסרה אימות מתאים, מה שעלול לבצע קוד שרירותי בעת עיבוד ביטויי XPath.
  3. פגם זה חושף את כל מופעי GeoServer לפגיעויות RCE פוטנציאליות, שכן תוקף יכול ליצור בקשה זדונית המנצלת את ביצוע ה-XPath הלא בטוח הזה כדי לשלוט בשרת.

סקירת תהליך עבודה של ניצול

  • א שֶׁלְאַחַר הבקשה נשלחת אל קבל ערך נכס פעולה. לאחר מכן GeoServer מנסה לאחזר את המאפיין (או ערך הפניה) עבור תכונה נתונה.  
  • אם המאפיין המבוקש קיים בטבלת פרטי סוג התכונה, GeoServer מעבד אותו כרגיל.
גיבוי GeoServer ל-commons-jxpath לצורך הערכת XPath בטבלה
  • עם זאת, אם הנכס אינו רשום, GeoServer נוטה לעזרה ב- commons-jxpath ספרייה כדי לפרש את פרמטר הבקשה כביטוי XPath.
  • מֵאָז commons-jxpath מאפשר ביצוע קוד Java ישירות מ-XPath, מנגנון גיבוי זה מאפשר פוטנציאלית ניצול פרמטרים של בקשה שסופקו על ידי המשתמש לצורך ביצוע קוד מרחוק. במילים פשוטות, תוקף יכול להזריק קוד זדוני כדי להשיג RCE.
דיאגרמת זרימת עבודה הממחישה את פעולת GetPropertyValue של GeoServer וזרימת ההתקפה

ניצול וניתוח פגיעויות

JXPath וגשר הביצוע של ג'אווה

עיבוד Commons-jxpath של ביטויי XPath זדוניים ב-GeoServer

ה commons-jxpath ספריית קוד, המכונה בדרך כלל JXPath, מאפשרת ניווט בין גרפי אובייקטים של Java (JavaBeans, אובייקטי DOM וכו') באמצעות תחביר XPath. לדוגמה, אם יש לך אובייקט Employee פשוט עם מאפיינים כמו שם וכתובת, JXPath מאפשר לך לבצע שאילתה על מאפיינים אלה כאילו היו צמתים במסמך XML.

ניווט JXPath של גרפי אובייקטי Java באמצעות תחביר XPath

ניצול פונקציות הרחבה

מעבר לפונקציות סטנדרטיות, JXPath תומך גם בפונקציות הרחבה הפועלות כגשר ל-Java. "גשר ל-Java" זה חיוני משום שהוא מאפשר קריאה ישירה של פונקציות Java בתוך שאילתות XPath, לדוגמה:

שאילתת JXPath על מאפייני אובייקט Java Employee

בגלל המגבלות המעטות על אפשרויות הקריאה של מתודות Java דרך גשר זה, תוקף יכול לנצל את exec() פונקציה (או שיטות דומות) לביצוע פקודות שרירותיות בשרת.

קריאה לפונקציית הרחבה מגשרת בין XPath לשיטות Java

ערך קבלת נכס של WFS

מערכת ה-WFS של GeoServer מאפשרת למשתמשים לבצע שאילתות ולטפל בתכונות גיאו-מרחביות. בתנאים רגילים, מערכת ה-WFS קבל ערך נכס הפעולה פשוט תחזיר את המאפיין המבוקש במבנה XML.

פעולת GetPropertyValue של WFS מחזירה מאפיין XML
מבנה תגובת XML של GetPropertyValue של WFS

ניתוח זרימת עבודה

  1. תוקף שולח בקשת POST אל /geoserver/wfs.
  2. GeoServer בוחן את תג ה-XML החיצוני ביותר—wfs:GetPropertyValue—כדי לקבוע איזו פעולה להפעיל.
  3. לאחר מכן, GeoServer מאציל את פרמטרי הבקשה לשיטה המתאימה במחלקת WFS. בתרחיש זה, ה-Dispatcher מנתב את הבקשה אל קבל ערך נכס שִׁיטָה.
GeoServer Dispatcher מכוון בקשה לשיטת GetPropertyValue
  1. בתוך המחלקה DefaultWebFeatureService20 (WFS), זה קבל ערך נכס השיטה מעבירה את הפרמטרים של המשתמש למטפל בעל אותו שם.
  2. של המטפל לָרוּץ() השיטה מקבלת את הבקשה, כולל הקריטי ערך הפניה פרמטר הנשלט על ידי המשתמש.
שיטת run() של Handler מקבלת בקשת משתמש עם פרמטר valueReference
  1. במהלך ה לָרוּץ() שיטה, GeoServer מאחזר את ערך ייחוס ומפעיל את לְהַעֲרִיך() פוּנקצִיָה.
GeoServer מאחזר את referenceValue ומפעיל את הפונקציה evaluate()
  1. אִם ערך הפניה אינו תואם את המאפיינים המוגדרים מראש של GeoServer, GeoServer מגדיר אותו כברירת מחדל ל- גישה לתכונה, אשר מפרש ערך הפניה כביטוי XPath.
FeaturePropertyAccessor מפרש את valueReference כביטוי XPath
  1. ה לְקַבֵּל() השיטה ב-FeaturePropertyAccessor משתמשת commons-jxpath כדי לבצע את שאילתת ה-XPath. כאן, של המשתמש ערך הפניה מועבר ישירות לפרמטר xpath ללא אימות. דרך JXPathContext.newContext()GeoServer מאתחל סביבה עבור שאילתות XPath, ואז מפעיל אותן דרך איטרציה מצביעים().
Commons-jxpath מבצע שאילתת XPath עם valueReference שסופק על ידי המשתמש

מכיוון ש-JXPath תומך בפונקציות הרחבה, תוקפים יכולים להחדיר קוד זדוני לביטוי XPath, מה שמפעיל ביצוע קוד שרירותי במופע GeoServer.

תוקף מזריק קוד זדוני דרך ביטוי XPath עבור RCE

שרשרת אירועים זו מדגימה עד כמה טיפול לא בטוח ב... ערך הפניה הפרמטר יכול להוביל ל-RCE, מה שמייצג איום אבטחה חמור על פריסות GeoServer פגיעות.

סימולציה של ההתקפה

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

צילום מסך של ממשק GeoServer במחשב Windows לצורך סימולציית פגיעויות

לאחר שהשרת פועל, תוקף יכול לנצל את הפגיעות על ידי שליחת בקשת POST עם ביטוי XPath זדוני דרך ערך הפניה לנקודת הקצה /geoserver/wfs.

קטע קוד XML המדגים בקשת POST זדונית המנצלת valueReference ב-GeoServer

תוצאה: לאחר שליחת הבקשה, ביטוי XPath הזדוני מבצע פקודת מערכת ומפעיל את הפעלת יישום המחשבון.

צילום מסך הממחיש את הפעלת אפליקציית המחשבון לאחר ניצול מוצלח של RCE

הפחתה והמלצות

פרצת אבטחה פשוטה יכולה להסלים למתקפת שרשרת אספקה ​​של תוכנה, במיוחד בפרויקטים המסתמכים על תוכנות קוד פתוח כמו GeoServer. טכנולוגיית OPSWAT SBOM ( Software Bill of Materials) מסייעת בזיהוי פגיעויות כמו CVE-2024-36401 בבסיס הקוד שלך.

דוגמה זו מדגימה כיצד OPSWAT SBOM:

  1. מזהה את רכיבי התוכנה המושפעים מפגיעויות.
  2. מעריך ומדרג את חומרת פרצת האבטחה - כאן, אירועי ה-CVE של GeoServer מסומנים כ"קריטיים".
  3. מזהה את הגרסה המושפעת.
  4. ממליץ על הגרסה המתוקנת כדי שצוותי פיתוח יוכלו להחיל תיקונים או לנקוט באמצעי תיקון באופן מיידי.
צילום מסך של לוח המחוונים OPSWAT SBOM מזהה חבילות GeoServer עם פגיעויות קריטיות
OPSWAT SBOM ( Software טכנולוגיית Bill of Materials) מזהה חבילות GeoServer עם פגיעויות קריטיות.

צעדים מומלצים נוספים

  1. עדכון GeoServer: שדרגו לגרסאות GeoServer 2.25.2, 2.24.4 או 2.23.6 (או גרסה מתקדמת יותר) שבהן הפגיעות תוקנה.
  2. תלויות בביקורת: השתמשו באופן קבוע בכלים כמו OPSWAT SBOM לזיהוי ספריות מיושנות (למשל, commons-jxpath) בסביבה שלך.
  3. הגבלת גישה: פרוס את GeoServer מאחורי חומות אש או שכבות אימות כדי למזער את משטח ההתקפה.
  4. ניטור אזהרות אבטחה: יש לעקוב אחר הערות השחרור הרשמיות של GeoServer ומסדי הנתונים של CVE כדי להישאר מעודכנים בתיקונים חדשים.

אוֹדוֹת OPSWAT SBOM

OPSWAT SBOM תומך בשפות התכנות הפופולריות ביותר, ומספק לצוותי פיתוח תוכנה נראות לספריות קוד פתוח של צד שלישי, התלויות הנלוות אליהן והגרסאות העדכניות ביותר הזמינות לשדרוג. מפתחים יכולים לשלב OPSWAT SBOM לתוך קוד המקור שלהם ושירותי קונטיינרים כגון GitHub, BitBucket, GitLab, Amazon ECR, DockerHub ועוד. למידע נוסף על SBOM .

דברו עם מומחה עוד היום כדי ללמוד כיצד לשלב OPSWAT כלים ופתרונות עם התשתית ותהליכי העבודה הקיימים שלך:

הישאר מעודכן עם OPSWAT !

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