Az OpenAI o3 modelljével találtak kritikus zeroday sebezhetőséget a Linux kernel SMB-implementációjában

2025. május 22-én Sean Heelan bejelentette, hogy az OpenAI o3 modelljének segítségével egy eddig ismeretlen, távoli zeroday sebezhetőséget (CVE-2025-37899) fedezett fel a Linux-kernel SMB-implementációjában. A kutató kiemeli, hogy semmilyen bonyolult keretrendszert vagy speciális eszközt nem használt: kizárólag az OpenAI o3 API-ra támaszkodott.

Az OpenAI o3 modelljével találtak kritikus zeroday sebezhetőséget a Linux kernel SMB-implementációjában

A háttér: ksmbd és az OpenAI o3 modell

A ksmbd egy Linux-kernel modul, amely az SMB3 protokollt valósítja meg kernel-térben, fájlmegosztásra hálózaton keresztül. Heelan eredetileg azért kezdett el ezzel foglalkozni, hogy szünetet tartson LLM-eszköz-fejlesztési munkáiban, ám az o3 modell megjelenése lehetőséget kínált a korábban talált hibák gyors, automatikus ellenőrzésére. Az OpenAI o3 nyílt forráskódú teszteléséhez minden egyes parancskezelőt és a hozzájuk kapcsolódó kódot – összesen körülbelül 3,3 ezer sor kódot – szolgáltatta a modellnek, majd ismételt, 100 futásos kísérletet végzett.

A korábban manuálisan felfedezett CVE-2025-37778

Elsőként a „Kerberos-azonosítási use-after-free” néven ismert CVE-2025-37778 került bemutatásra. A hiba a krb5_authenticate függvényben jelentkezik: a sikeres bejelentkezés („session setup”) parancs során a sess->user objektum felszabadul, ám hibajelzés (-EINVAL) esetén nem állítjuk vissza. Így a felszabadított memóriára mutató pointerek láncreakciót indíthatnak, amely során egy távoli támadó kontrollált adatokat írhat a kernelmemóriába.

static int krb5_authenticate(struct ksmbd_work *work,

                             struct smb2_sess_setup_req *req,

                             struct smb2_sess_setup_rsp *rsp)

{

    // … előkészítés …


    if (sess->state == SMB2_SESSION_VALID)

        ksmbd_free_user(sess->user);      // (1) felszabadítás


    retval = ksmbd_krb5_authenticate(sess, in_blob, in_len,

                                     out_blob, &out_len);

    if (retval) {

        ksmbd_debug(SMB, "krb5 authentication failed\n");

        return -EINVAL;                   // (2) visszatérés inicializálás nélkül

    }


    // … további feldolgozás …

}

A sebezhetőség következményeként a freed memóriaterületre írt rosszindulatú adatok lehetővé teszik a támadónak, hogy root jogosultságú kódot hajtson végre, míg az érvénytelen vagy NULL pointer dereferálása kernel panichez vezet, ami az SMB-szerver összeomlását és a szolgáltatás elérhetetlenné válását okozza.

Az OpenAI o3 modellen futtatott kísérletek eredményéből kiderül, hogy 100 futásból az o3 nyolcszor jelezte helyesen a hibát, 66-szor tévesen „nincs hiba” eredményt adott, 28 esetben pedig hamis riasztás történt (TP:FP ≈ 1:4,5). A „TP:FP ≈ 1:4,5” azt jelenti, hogy az o3 modell eredményeiben minden egyes valós sebezhetőség-jelzés (True Positive, TP) mellé nagyjából 4,5 hamis riasztás (False Positive, FP) társult. Másképp mondva, átlagosan öt jelentésből csak egy mutat tényleges, működő exploitot lehetővé tévő hibát, négy és fél pedig olyan riasztás, amely nem vezet valós biztonsági probléma azonosításához. Ennélfogva egy sebezhetőség-kutatónak általában öt jelentést kell átnéznie, hogy egy valódi sebezhetőséget találjon. Összehasonlításképp a Claude Sonnet 3.7 három, a Sonnet 3.5 pedig nulla találatot produkált 100 futás alatt.

Új zeroday: CVE-2025-37899 a session logoff során

A második zeroday a smb2_session_logoff kezelésekor jelentkezik: egy szál felszabadítja a sess->user objektumot és nullázza, miközben egy másik, párhuzamos szál még használhatná. A hiányos szinkronizáció use-after-free helyzetet teremt.

int smb2_session_logoff(struct ksmbd_work *work)

{

    struct ksmbd_conn   *conn = work->conn;

    struct ksmbd_session *sess = work->sess;


    // … kapcsolat bontása, zárolások …


    if (sess->user) {

        ksmbd_free_user(sess->user);      // (1) felszabadítás

        sess->user = NULL;                // (2) csak a lokális mutató nullázása

    }


    // … további munka …

}

Ennek eredményeként a támadó a felszabadított struktúrára mutató pointer szándékos manipulálásával magas, akár root jogosultságú kernelkódot indíthat, miközben a váratlan írások memóriakorrupciót és a kernel instabil viselkedését idézhetik elő, továbbá a use-after-free által kiváltott kernel panic végül leállítja az SMB-szolgáltatást, azaz Denial of Service állapotot hoz létre.

Info
A zero-day sebezhetőség olyan biztonsági rés egy szoftverben vagy rendszerben, amelyről a fejlesztő vagy a gyártó még nem tud, ezért nincs rá frissítés vagy javítás („patch”). Mivel a gyártó sem értesült róla, a felhasználók sem kapnak előzetes figyelmeztetést vagy védelmet ellene. Egy támadó így „nulladik napon” – vagyis a felfedezés napján – már kihasználhatja a hibát, mielőtt bármilyen ellenintézkedés megjelenne. Emiatt a zero-day sebezhetőségek különösen veszélyesek: külső szemlélők és védelmi rendszerek nem készülhetnek fel rájuk, így nagyobb eséllyel nyitnak kaput távoli kódvégrehajtásnak, adatlopásnak vagy rendszerleállásnak.

A probléma megoldásaként felfedezték, hogy a sess->user = NULL;önmagában nem véd meg minden versenyhelyzettől. Két kötött (bound) kapcsolat esetén szükséges erősebb szinkronizáció (pl. write-lock vagy referenciaszámlálás) bevezetése a sess->user objektum minden hozzáférésénél.

Következtetések

Az OpenAI o3 modell példái – a korábban manuálisan felfedezett CVE-2025-37778 és az új logoff use-after-free CVE-2025-37899 – világosan mutatják, hogy a nagy nyelvi modellek ma már valódi hozzáadott értéket hozhatnak a sebezhetőség-kutatásban. Megfelelően előkészített kódkontextus esetén képesek olyan kritikus hibák felfedezésére is, amelyeket korábban kézzel kellett volna auditálni. Ugyanakkor a jelenlegi jel-zaj arány – körülbelül egy használható találat négy-öt téves riasztás mellett – azt igényli, hogy a folyamatba továbbra is vonjuk be a szakértői ellenőrzést.

A jövőbeni fejlesztések egyik kulcsa a modellek promptolásának finomítása és olyan kontextus-kiválasztási stratégiák kidolgozása, amelyekkel csökkenthetőek a hamis pozitív eredmények. Emellett érdemes az OpenAI o3-at integrálni a meglévő audit- és CI-pipeline-okba, hogy a kód változásai mellett automatikusan is figyelmeztetéseket kapjunk. Végül, ahogy bővül a tesztelendő kódbázisok köre, fontos folyamatosan mérni a találati arányokat és a felismerési pontosságot, mert ez segít abban, hogy az LLM-vezérelt sebezhetőség-vizsgálat megbízhatóbb és hatékonyabb eszközzé váljon a kernel-szintű hibák felkutatásában.