ControlFlag 1.0, C-keele koodivigade tuvastamise tööriista vÀljalaskmine

Intel on avaldanud esimese olulise ControlFlag 1.0 tööriista versiooni, mis vĂ”imaldab tuvastada vigu ja anomaaliaid lĂ€htekoodides, kasutades masinĂ”ppesĂŒsteemi, mis on treenitud suure hulga olemasoleva koodi pĂ”hjal. Erinevalt traditsioonilistest staatilistest analĂŒsaatoritest ei kasuta ControlFlag valmis reegleid, kus on keeruline ette nĂ€ha kĂ”iki vĂ”imalikke variante, vaid toetub statistikale, mis pĂ”hineb erinevate keelekonstruktsioonide kasutamisel paljude olemasolevate projektide seas. ControlFlagi kood on kirjutatud C++ keeles ja avalik MIT litsentsi alusel.

SĂŒsteem Ă”pib, ehitades statistilise mudeli olemasoleva avatud projektide koodide hulgast, mis on avaldatud GitHubis ja sarnastes avalikes hoidlates. Õppefaasis mÀÀrab sĂŒsteem tĂŒĂŒpilised konstruktsioonide mustrid koodis ja loob sĂŒntaktilise puu nende mustrite vahel, mis peegeldab koodi tĂ€itmise voogu programmis. Tulemusena kujuneb vĂ€lja otsuste tegemise ehtne puu, mis ĂŒhendab kĂ”ikide analĂŒĂŒsitud lĂ€htekoodide arenduskogemuse. Kontrollitava koodi puhul viiakse lĂ€bi sarnane mustrite mÀÀramise protsess, mida vĂ”rreldakse ehtsa otsuste tegemise puuga. Suured lahknevused naaberharudega viitavad kontrollitava mustri anomaaliale.

ControlFlag 1.0, C-keele koodivigade tuvastamise tööriista vÀljalaskmine

ControlFlag'i vĂ”imaluste nĂ€itamiseks viidi lĂ€bi lĂ€htekoodide analĂŒĂŒs OpenSSL ja cURL projektidest:

  • OpenSSL-is tuvastati anomaalsed konstruktsioonid „(s1 == NULL) ∧ (s2 == NULL)“ ja „(s1 == NULL) | (s2 == NULL)“, mis ei vasta tavaliselt kasutatavale mustrile „(s1 == NULL) || (s2 == NULL)“. Koodis tuvastati samuti anomaaliad vĂ€ljendites „(-2 == rv)” (miinus oli trĂŒkiviga) ja „BIO_puts(bp, ':') <= 0)” (funktsiooni eduka lĂ”petamise kontrollimisel oleks pidanud olema „== 0“).
  • cURL-is tuvastati staatiliste analĂŒsaatorite poolt mööda lastud viga struktuuri elemendi „s->keepon” kasutamisel, mis oli arvutuslik tĂŒĂŒp, kuid vĂ”rreldud boolean vÀÀrtusega TRUE.

ControlFlag 1.0 versiooni eripĂ€radena toome esile tĂ€ieliku toe C keele tĂŒĂŒpparameetritele ja vĂ”imaluse tuvastada anomaaliaid „if” tingimustes. NĂ€iteks, kui analĂŒĂŒsida koodilĂ”iku „if (x = 7) y = x;”, tuvastab sĂŒsteem, et tavaliselt kasutatakse „if” operaatori jaoks numbriliste vÀÀrtuste vĂ”rdlemiseks konstruktsiooni „muutuja == number”. Seega on suure tĂ”enĂ€osusega, et „muutuja = number” vĂ€ljendis „if” on kirjutusviga. Pakett sisaldab skripti, millega saab laadida GitHubis C keeles olevaid skeeme ja kasutada neid mudeli loomiseks. Samuti on saadaval juba valmis mudelid, mis vĂ”imaldavad kohe alustada koodi kontrollimist.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster