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.
Tartalomjegyzék

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.
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.