Kaj se je zgodilo
V odprtokodni platformi MLflow, ki se uporablja za upravljanje strojnega učenja in agentov na osnovi velikih jezikovnih modelov, je bila odkrita ranljivost, sledena kot CVE-2026-116692. Gre za napako v mehanizmu deserializacije »scorerjev tretjih strani« (third-party scorers), ki je bil v MLflow uveden z različico 3.12.0.
Po navedbah GitHub Security Advisories (GHSA-26p8-2jq9-3vq9) strežnik med deserializacijo scorerja sprejme pot do Python modula, ki jo določi klicatelj zahteve, pod enim izmed štirih dovoljenih predpon paketov. Strežnik ta modul uvozi, pridobi razred, ki ga prav tako določi zahteva, in ga sinhrono inicializira. Težava je v tem, da sistem sprejme katerikoli potomec dovoljenega modula, namesto da bi zahteval natančno ujemanje z dovoljenim seznamom.
Napadalec lahko to pomanjkljivost izkoristi v kombinaciji z vgrajenimi funkcijami MLflow za upravljanje eksperimentov, zagonov (runs) in nalaganje artefaktov. Postopek vključuje ustvarjanje eksperimenta, katerega lokacija artefaktov kaže na zapisljiv dovoljen paket scorerja, ustvarjanje zagona, nalaganje Python modula v direktorij artefaktov tega zagona, nato pa oddajo serializiranega scorerja tretje strani, katerega pot do modula se ujema z naloženo datoteko. Sprožitev se zgodi prek končne točke `/ajax-api/3.0/mlflow/scorer/invoke`.
Po navedbah vira, ki je ranljivost preizkusil na uradni sliki MLflow različice 3.14.0 z privzeto onemogočeno avtentikacijo, to vodi do neavtenticiranega izvajanja poljubne Python kode s pravicami procesa strežnika MLflow. V testiranem okolju je proces tekel s pravicami uid 0, nameščeno drevo Python paketov pa je bilo zapisljivo. Pri namestitvah z osnovno avtentikacijo je za izkoriščanje potreben uporabnik, ki lahko ustvari eksperiment in zagon ter naloži artefakte, pri čemer mora biti dovoljen paket scorerja zapisljiv za proces strežnika.
CVE-2026-116692 je po podatkih NVD ocenjen s CVSS 3.1 oceno 9.8, kar uvršča ranljivost med kritične. Vektor ocene (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) kaže na izkoriščanje prek omrežja, nizko zahtevnost napada, brez potrebnih pravic in brez interakcije uporabnika, s polnim vplivom na zaupnost, celovitost in razpoložljivost. Ranljivost je odpravljena v različici MLflow 3.17.0.
Kaj to pomeni za slovenska in evropska podjetja
MLflow uporabljajo organizacije, ki razvijajo ali upravljajo modele strojnega učenja in agente na osnovi umetne inteligence, pogosto tudi v internih ali raziskovalnih okoljih, kjer avtentikacija ni vedno privzeto vklopljena. Glede na to, da ranljivost prizadene strežnike brez avtentikacije neposredno in brez potrebe po interakciji uporabnika, predstavlja tveganje predvsem za organizacije, ki MLflow strežnike izpostavljajo v notranjih omrežjih ali celo javno dostopnih okoljih brez dodatnih zaščitnih plasti. Podjetja, ki MLflow uporabljajo za razvoj AI rešitev, naj preverijo, katera različica teče v njihovem okolju in ali je strežnik dostopen širšemu krogu uporabnikov ali omrežij.
Priporočeni ukrepi
- Posodobite MLflow na različico 3.17.0 ali novejšo, kjer je ranljivost odpravljena.
- Preverite, ali so vaši MLflow strežniki dostopni brez avtentikacije, in po potrebi omogočite avtentikacijo.
- Tudi pri vklopljeni osnovni avtentikaciji omejite pravice uporabnikov za ustvarjanje eksperimentov, zagonov in nalaganje artefaktov na zaupane osebe.
- Preverite, ali je proces MLflow strežnika zagnan s povišanimi pravicami (na primer uid 0), in ga po možnosti zaženite z omejenimi pravicami.
- Omejite zapisljivost dovoljenih paketov scorerjev za proces strežnika, kjer je to mogoče.
- Spremljajte uradne vire MLflow (GitHub Security Advisories, objavo na GitHubu) za morebitne dodatne informacije o ranljivosti.
Vprašanja in odgovori
Ali je ranljivost že aktivno izkoriščana? Na podlagi razpoložljivih virov trenutno ni podatkov, da bi bila ranljivost aktivno izkoriščana v praksi. Ranljivost ni uvrščena v katalog CISA KEV.
Katere različice MLflow so prizadete? Prizadete so različice od 3.12.0rc0 do vključno 3.17.0 (nepopravljene), ranljivost pa je odpravljena v različici 3.17.0.
Kaj je potrebno za uspešen napad? Na strežnikih brez avtentikacije napadalec ne potrebuje poverilnic. Pri strežnikih z osnovno avtentikacijo mora napadalec imeti pravice za ustvarjanje eksperimenta in zagona ter nalaganje artefaktov, dovoljen paket scorerja pa mora biti zapisljiv za proces strežnika.
Pogosta vprašanja
Kaj je CVE-2026-116692?
Gre za kritično ranljivost v platformi MLflow, ki omogoča oddaljeno izvajanje kode prek napačno implementirane deserializacije scorerjev tretjih strani. Ocenjena je s CVSS oceno 9.8.
Katere različice MLflow so prizadete?
Prizadete so različice od 3.12.0rc0 do vključno 3.17.0 brez popravka. Ranljivost je odpravljena v različici 3.17.0.
Ali je potrebna avtentikacija za izkoriščanje ranljivosti?
Na strežnikih z onemogočeno avtentikacijo napad ni potreben noben poverilnica. Pri osnovni avtentikaciji mora napadalec imeti pravice za ustvarjanje eksperimentov, zagonov in nalaganje artefaktov.
Kako se zaščitim pred to ranljivostjo?
Posodobite MLflow na različico 3.17.0 ali novejšo, omogočite avtentikacijo in omejite pravice uporabnikov ter zapisljivost dovoljenih paketov scorerjev.
Sorodne objave
- GraphQL-core: ranljivost DoS v validacijskem pravilu OverlappingFieldsCanBeMerged
- Pegasus vohunska programska oprema potrjena na iPhonu rektorja beograjske univerze tik pred volitvami v Srbiji
- Zlonamerna programska oprema PEERSTITCH izkorišča ranljivost v FortiOS za zaobidenje preverjanja VPN-sej

