Pagpagawas sa ControlFlag 1.0, usa ka himan alang sa pag-ila sa mga sayup sa C code

Gipatik sa Intel ang una nga mayor nga pagpagawas sa ControlFlag 1.0 nga himan, nga nagtugot kanimo sa pag-ila sa mga sayup ug anomaliya sa source code gamit ang usa ka sistema sa pagkat-on sa makina nga gibansay sa usa ka dako nga kantidad sa kasamtangan nga code. Dili sama sa tradisyonal nga static analyzers, ang ControlFlag wala mag-apply sa andam nga mga lagda, diin lisud ang paghatag alang sa tanan nga posible nga mga kapilian, apan gibase sa estadistika sa paggamit sa lain-laing mga pagtukod sa pinulongan sa daghang mga kasamtangan nga mga proyekto. Ang ControlFlag code kay gisulat sa C++ ug open sourced ubos sa lisensya sa MIT.

Ang sistema gibansay pinaagi sa paghimo ug estadistika nga modelo sa kasamtangan nga code array sa open-source nga mga proyekto nga gipatik sa GitHub ug susamang mga pampublikong repositoryo. Sa yugto sa pagbansay, ang sistema nagtino sa tipikal nga mga sumbanan alang sa pagtukod sa mga istruktura sa code ug nagtukod og usa ka syntactic nga kahoy sa mga koneksyon tali niini nga mga sumbanan, nga nagpakita sa dagan sa code execution sa programa. Ingon usa ka sangputanan, usa ka punoan sa paghimog desisyon sa pakisayran ang naporma nga naghiusa sa kasinatian sa pag-uswag sa tanan nga gisusi nga mga code sa gigikanan. Ang code nga gisusi nag-agi sa susamang proseso sa pag-ila sa mga sumbanan nga gisusi batok sa usa ka reference decision tree. Ang dagkong mga kalainan sa silingang mga sanga nagpakita sa presensya sa usa ka anomaliya sa sumbanan nga gisusi.

Pagpagawas sa ControlFlag 1.0, usa ka himan alang sa pag-ila sa mga sayup sa C code

Isip usa ka pananglitan sa mga kapabilidad sa ControlFlag, gisusi sa mga developer ang mga source code sa OpenSSL ug cURL nga mga proyekto:

  • Anomalous constructs β€œ(s1 == NULL) ∧ (s2 == NULL)” ug β€œ(s1 == NULL) | (s2 == NULL)" , nga dili motakdo sa kasagarang gigamit nga pattern "(s1 == NULL) || (s2 == NULL)". Giila usab sa code ang mga anomaliya sa mga ekspresyong "(-2 == rv)" (ang minus usa ka typo) ug "BIO_puts(bp, ":") <= 0)" (sa konteksto sa pagsusi sa malampuson nga pagkompleto sa function kini kinahanglan nga "== 0").
  • Sa cURL, nadiskubrehan ang usa ka sayup nga wala makit-an sa mga static nga analista kung gigamit ang elemento sa istruktura nga "s-> keepon", nga adunay usa ka numeric nga tipo, apan gitandi sa boolean nga kantidad nga TINUOD.

Lakip sa mga bahin sa ControlFlag 1.0 nga bersyon, adunay bug-os nga suporta alang sa standard templates alang sa C nga pinulongan ug ang abilidad sa pag-ila sa mga anomaliya sa conditional "kon" nga mga ekspresyon. Pananglitan, sa pag-analisar sa tipik sa code "kung (x = 7) y = x;" Ang sistema magtino nga ang "kon" nga pahayag kasagaran naggamit sa "variable == numero" nga pagtukod aron itandi ang numeric nga mga bili, mao nga lagmit nga ang "variable = numero" sa "kon" nga ekspresyon tungod sa usa ka typo. Ang kit naglakip sa usa ka script nga nagtugot kanimo sa pag-download sa kasamtangan nga C language repository sa GitHub ug gamiton kini sa paghimo sa modelo. Anaa usab ang andam nga mga modelo, nga nagtugot kanimo nga magsugod dayon sa pagsusi sa code.

Source: opennet.ru

Idugang sa usa ka comment