Verëffentlechung vu ControlFlag 1.0, e Tool fir Feeler am C Code z'identifizéieren

Intel huet déi éischt grouss Verëffentlechung vum ControlFlag 1.0-Tool verëffentlecht, wat Iech erlaabt Feeler an Anomalien am Quellcode z'identifizéieren mat engem Maschinnléiersystem, deen op enger grousser Quantitéit vum existente Code trainéiert gëtt. Am Géigesaz zu traditionelle statesche Analysatoren gëlt ControlFlag keng fäerdeg Regelen, an deenen et schwéier ass fir all méiglech Optiounen ze bidden, awer baséiert op Statistiken iwwer d'Benotzung vu verschiddene Sproochkonstruktiounen an enger grousser Zuel vu existente Projeten. De ControlFlag Code ass an C++ geschriwwe ginn an ass opgemaach ënner der MIT Lizenz.

De System gëtt trainéiert andeems en statistesche Modell vun der existéierender Code Array vun Open-Source Projeten op GitHub an ähnlechen ëffentleche Repositories publizéiert gëtt. Op der Trainingsstadium bestëmmt de System typesch Mustere fir Strukturen am Code ze bauen a baut e syntakteschen Bam vu Verbindungen tëscht dëse Mustere, wat de Flux vun der Code Ausféierung am Programm reflektéiert. Als Resultat gëtt e Referenz-Entscheedungsbam geformt, deen d'Entwécklungserfarung vun all analyséierte Quellcode kombinéiert. De Code, deen iwwerpréift gëtt, mécht en ähnleche Prozess fir Musteren z'identifizéieren déi géint e Referenzentscheedungsbam gepréift ginn. Grouss Diskrepanzen mat Nopeschzweige weisen op d'Präsenz vun enger Anomalie am Muster, deen iwwerpréift gëtt.

Verëffentlechung vu ControlFlag 1.0, e Tool fir Feeler am C Code z'identifizéieren

Als Beispill vun de Fäegkeeten vun ControlFlag hunn d'Entwéckler d'Quellcoden vun den OpenSSL a cURL Projeten analyséiert:

  • Anomal Konstruktiounen "(s1 == NULL) ∧ (s2 == NULL)" an "(s1 == NULL) | (s2 == NULL)" , déi net mam allgemeng benotzte Muster passen "(s1 == NULL) || (s2 == NULL)". De Code identifizéiert och Anomalien an den Ausdréck "(-2 == rv)" (de Minus war en Tippfeeler) an "BIO_puts (bp, ":") <= 0)" (am Kontext vun der Iwwerpréiwung vun der erfollegräicher Ofschloss vun der Funktioun sollt et "== 0" gewiescht sinn).
  • Am cURL gouf e Feeler entdeckt, deen net vu statesche Analysatoren entdeckt gouf wann Dir d'Strukturelement "s->keepon" benotzt, deen en numereschen Typ hat, awer mat dem boolesche Wäert TRUE verglach gouf.

Ënnert de Fonctiounen vun der ControlFlag 1.0 Versioun gëtt et voll Ënnerstëtzung fir Standard Templates fir d'C Sprooch an d'Kapazitéit fir Anomalien an bedingten "wann" Ausdréck z'entdecken. Zum Beispill, wann Dir de Codefragment analyséiert "wann (x = 7) y = x;" De System wäert bestëmmen datt d'"if" Ausso normalerweis d'"Variabel == Zuel" Konstruktioun benotzt fir numeresch Wäerter ze vergläichen, also ass et héich wahrscheinlech datt d'"Variabel = Zuel" am "if" Ausdrock duerch en Tippfeeler verursaacht gëtt. De Kit enthält e Skript deen Iech erlaabt existent C Sprooche Repositories op GitHub erofzelueden an ze benotzen fir de Modell ze bauen. Fäerdeg Modeller sinn och verfügbar, wat Iech erlaabt Iech direkt de Code ze kontrolléieren.

Source: opennet.ru

Setzt e Commentaire