ב-Grafana, מערכת קוד פתוח להצגת גרפים וניטור, כל תוסף מותקן מקבל כתובת משלו תחת /public/plugins/. הכתובת הזאת אפשרה לבקש קבצים שנמצאים מחוץ לתיקייה של התוסף, ולקבל בתמורה קבצים מקומיים מהשרת. הציון הוא 7.5 מתוך 10, וההשפעה היא על סודיות בלבד.
מה החולשה?
כששרת מגיש קובץ לפי שם שהמשתמש ביקש, הוא צריך לוודא שהקובץ נמצא בתוך התיקייה שיועדה לכך. נתיב יכול להכיל גם צעדים אחורה, ומספיק מספר גדול מספיק של צעדים כאלה כדי לצאת מהתיקייה אל שאר הדיסק. לתבנית הזאת קוראים Path Traversal.
ב-Grafana המסלול הפגיע הוא הכתובת שדרכה מוגשים קבצים של תוספים. צריך לדעת את המזהה של תוסף מותקן, וזו אינה חומה של ממש: מזהי התוספים הנפוצים ידועים ומתועדים. משם הבקשה יוצאת מהתיקייה של התוסף וקוראת קבצים אחרים.
מה שהופך קריאת קבצים דווקא ב-Grafana למשמעותית יותר ממה שהיא נשמעת הוא מה ששמור שם. שרת Grafana מחזיק את ההגדרות של מקורות הנתונים שהוא מתחבר אליהם, ובהן פרטי אימות למערכות אחרות. חולשה שקוראת קבצים מהשרת הזה אינה בהכרח נעצרת בשרת הזה.
מי מושפע?
הרשומה מסמנת את Grafana בטווח שבין 8.0.0 ל-8.3.0: את 8.0.0 עצמה, את הטווח מ-8.0.1 עד 8.0.7, מ-8.1.0 עד 8.1.8, מ-8.2.0 עד 8.2.7, ואת 8.3.0. הגרסאות הסוגרות הן 8.0.7, 8.1.8, 8.2.7 ו-8.3.1.
נקודה שהרשומה טורחת לומר במפורש ושווה להעביר הלאה: Grafana Cloud לא הייתה פגיעה בשום שלב. החולשה נוגעת להתקנות שארגונים מריצים בעצמם.
האם מנוצלת בפועל?
כן. הרשומה פורסמה ב-NVD בדצמבר 2021, וב-9 באוקטובר 2025 היא נוספה לקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, רשימת החולשות שידוע שתוקפים משתמשים בהן בפועל. המועד שנקבע לגופים הפדרליים האמריקאיים לסיים את התיקון היה 30 באוקטובר 2025.
הפער בין 2021 ל-2025 מספר משהו על ההתקנות ולא על החולשה. Grafana מותקן לא פעם כשירות פנימי שמישהו הקים בזמנו ומאז הוא פשוט עובד, ושרת כזה אינו מקבל תשומת לב עד שמשהו קורה.
מה עושים?
עדכנו לגרסה סוגרת בענף שלכם: 8.0.7, 8.1.8, 8.2.7 או 8.3.1. מי שנמצא על ענף חדש בהרבה מכוסה ממילא, כי הרשומה מסתיימת ב-8.3.0.
הפרטים המלאים, ובכללם רשימת הנתיבים החשופים והמלצות לצמצום, נמצאים בייעוץ האבטחה של Grafana ב-GitHub ובהודעה של Grafana Labs על אותו 0day.
אם השרת היה נגיש מבחוץ, החליפו את פרטי האימות של מקורות הנתונים שמוגדרים בו. החולשה מאפשרת קריאה של קבצים מקומיים, ולכן מה ששמור שם הוא מה שכדאי להניח שנקרא.