OpenAI 29. jūlijā publicēja sava koda drošības skenera komandrindas rīku GitHub ar Apache-2.0 licenci. Repozitorijs openai/codex-security izveidots 13. jūlijā un līdz šim savācis 4067 zvaigznes, 231 atzarojumu un 49 atvērtas problēmas. Galvenā valoda ir TypeScript.
Pakotne satur divas lietas: komandrindas rīku Codex Security CLI un TypeScript SDK. Ar tiem var skenēt repozitorijus, salīdzināt atradumus starp atsevišķām palaišanas reizēm, pārbaudīt izlabotās vietas un iekļaut drošības pārbaudes CI plūsmās. Līdz šim tas viss bija pieejams tikai caur Codex tīmekļa saskarni maksas ChatGPT plānos.
Sākumā bija Aardvark
Rīka pirmais nosaukums bija Aardvark. OpenAI to pieteica pagājušajā gadā slēgtā beta versijā nelielai klientu grupai, kurā ietilpa arī Netgear. Aardvark strādāja ar GPT-5 un darbojās kā autonoms aģents: tas pastāvīgi lasīja norādīto kodubāzi, meklēja ievainojamības un piedāvāja ielāpus.
10. martā OpenAI rīku pārsauca par Codex Security un atvēra pētniecības priekšskatījumā ChatGPT Pro, Business, Enterprise un Edu klientiem. Pirmais mēnesis bija bez maksas. Uzņēmums toreiz rakstīja, ka pēc Aardvark izvietošanas slēgtajā betā uzlabota konteksta padošana un atradumu kvalitāte.
Ko skeneris atrada pirms publiskošanas
Pirms pētniecības priekšskatījuma OpenAI palaida skeneri pāri 1,2 miljoniem komitu 30 dienu laikā. Rezultātā tas atrada gandrīz 800 kritiskas ievainojamības un vairāk nekā 10 000 augstas bīstamības problēmu. Testētie projekti bija Chromium, OpenSSL, PHP, GOGS un GnuTLS, kā ziņo SecurityWeek.
Skenera darba secība ir trīs soļos. Vispirms tas izlasa repozitoriju un uzbūvē draudu modeli. Tad meklē vietas, kas šim modelim atbilst. Beigās piedāvā ielāpu, ko izstrādātājs var apskatīt un pieņemt vai noraidīt. Atšķirība no parastā šablonu skenera ir tā, ka modelis vērtē koda uzvedību kontekstā, nevis tikai meklē zināmus rakstus.
Rīks spēj atrast sarežģītas problēmas, ko citi aģentu rīki var palaist garām.
Tā OpenAI apraksta savu skeneri. Salīdzinošus skaitļus pret citiem skeneriem uzņēmums nav publicējis. Tiešs konkurents ir Anthropic Claude Security, kas arī skenē kodubāzes un piedāvā ielāpus.
Kas vajadzīgs, lai palaistu
Pakotnei nepieciešams Node.js 22 vai jaunāks un Python 3.10 vai jaunāks. Instalēšana notiek ar npm install @openai/codex-security. Pēc tam npx codex-security login atver pieteikšanos un npx codex-security scan . palaiž skenēšanu pašreizējā mapē.
Pieteikties var divējādi. Interaktīvi darbam derēs ChatGPT sesija. CI plūsmām paredzēta mainīgā OPENAI_API_KEY vērtība, kas neinteraktīvā vidē pārmāc ChatGPT sesiju. Ja abas iespējas ir pieejamas un vajag konkrētu, ir karogi --auth chatgpt un --auth api-key.
Skenēšanas vēsture glabājas Codex Security darbvirsmas stāvokļa mapē. Tās atrašanās vietu maina mainīgais CODEX_SECURITY_STATE_DIR. Tas noder, ja skenēšana notiek konteinerā, kur noklusējuma mape pēc darba beigām pazūd.
Kur rīks klūp
Publiskotā versija ir agrīna. GitHub problēmu sarakstā izstrādātāji apraksta divas nepatikšanas, kas skar lielus repozitorijus. Pirmā: pieprasījumu ierobežojums pārtrauc skenēšanu vidū. Otrā ir nepatīkamāka. Pārtrauktu skenēšanu atsākt nevar, kaut gan rīka paziņojums liek domāt citādi. Lielā repozitorijā tas nozīmē sākt no nulles.
Pirmajās stundās pēc publiskošanas daļai lietotāju neizdevās pieteikties. OpenAI to salaboja tajā pašā dienā. Repozitorija pēdējais komits datēts ar 29. jūliju, tātad kods tiek laists ārā ātrāk, nekā krājas problēmu saraksts.
Pats OpenAI atzīmē, ka aģentu drošības skeneri nav jaunums. GitHub CodeQL meklē ievainojamības ar vaicājumiem pret koda grafu, Google OSS-Fuzz kopš 2016. gada met nejaušus datus atvērtā koda bibliotēkām. Abi šie rīki atvērtā koda projektiem ir bez maksas. Codex Security atšķiras ar to, ka strādā ar valodas modeli un lasa kodu tāpat kā to darītu cilvēks, tāpēc tas ķer loģikas kļūdas, ko vaicājums pret koda grafu neapraksta.
Cena par to ir aprēķina laiks. CodeQL vaicājums pār vidēju repozitoriju izpildās minūtēs uz parasta CI izpildītāja. Modeļa skenēšana prasa saukt OpenAI serverus par katru pārbaudīto failu, tāpēc lielā kodubāzē rēķins un ilgums aug lineāri ar apjomu. Tieši tāpēc rīkā ir budžeta ierobežojumi un dublikātu apvienošana.
Kam tas paredzēts
OpenAI izstrādātājs kopienas forumā skaidroja, ka rīks būvēts ilgtermiņa darbam pāri vairākiem repozitorijiem. Tajā ir organizācijas mēroga skenēšana, vēsturisko rezultātu uzskaite, dublikātu apvienošana, viltus pozitīvo atradumu pārvaldība un budžeta ierobežojumi. Pēdējais ir svarīgs praksē: skenēšana ar valodas modeli maksā par katru palaišanas reizi, tāpēc bez griestiem nakts CI plūsma var izdedzināt kvotu.
Dokumentācija ar visām komandām un izvades formātiem atrodama learn.chatgpt.com sadaļā par drošības rīku. Pati pakotne pēc the-decoder ziņotā joprojām ir beta stadijā. OpenAI raksta, ka funkcijas mainīsies pēc lietotāju atsauksmēm.
Apache-2.0 licence nozīmē, ka kodu drīkst pārveidot un iekļaut komercproduktos. Taču skenēšana pati par sevi bez OpenAI infrastruktūras nestrādā: CLI prasa piekļuvi Codex Security pakalpojumam. Atvērts ir klients, nevis modelis, kas veic analīzi.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.