Dh’ fhosgail Intel an còd siostam ionnsachaidh inneal ControlFlag gus biastagan sa chòd a chomharrachadh

Tha Intel air leasachaidhean a lorg co-cheangailte ris a’ phròiseact rannsachaidh ControlFlag a tha ag amas air siostam ionnsachaidh inneal a chruthachadh gus càileachd còd a leasachadh. Tha an t-inneal a dheasaich am pròiseact a’ ceadachadh, stèidhichte air modail air a thrèanadh air tòrr chòd a th’ ann mar-thà, grunn mhearachdan agus neo-riaghailteachdan a chomharrachadh ann an teacsaichean tùsail sgrìobhte ann an cànanan àrd-ìre leithid C/C ++. Tha an siostam freagarrach airson diofar sheòrsaichean de dhuilgheadasan a chomharrachadh ann an còd, bho bhith a’ comharrachadh typos agus measgachadh ceàrr de sheòrsa, gu bhith a’ comharrachadh sgrùdaidhean luach NULL a tha a dhìth ann an comharran agus duilgheadasan cuimhne. Tha an còd ControlFlag sgrìobhte ann an C ++ agus tha e fosgailte fo chead MIT.

Tha an siostam fèin-ionnsachadh le bhith a’ togail modail staitistigeil den raon còd a th’ ann mar-thà de phròiseactan stòr fosgailte a chaidh fhoillseachadh ann an GitHub agus stòran poblach coltach ris. Aig an ìre trèanaidh, bidh an siostam a’ dearbhadh phàtranan àbhaisteach airson structaran a thogail sa chòd agus a’ togail craobh syntactic de cheanglaichean eadar na pàtrain sin, a’ nochdadh sruth cur an gnìomh còd sa phrògram. Mar thoradh air an sin, tha craobh co-dhùnaidh iomraidh air a chruthachadh a tha a’ cothlamadh eòlas leasachaidh a h-uile còd stòr sgrùdaichte.

Tha an còd fo sgrùdadh a’ dol tro phròiseas coltach ri bhith a’ comharrachadh phàtranan a thèid a sgrùdadh mu choinneamh craobh co-dhùnaidh iomraidh. Tha eadar-dhealachaidhean mòra le meuran faisg air làimh a 'sealltainn gu bheil neo-riaghailteachd anns a' phàtran a thathar a 'sgrùdadh. Leigidh an siostam leat chan ann a-mhàin mearachd a chomharrachadh san teamplaid, ach cuideachd ceartachadh a mholadh. Mar eisimpleir, anns a’ chòd OpenSSL, chaidh an togail “(s1 == NULL) ∧ (s2 == NULL)” a chomharrachadh, a nochd anns a’ chraobh cho-chòrdadh dìreach 8 tursan, agus am meur as fhaisge leis an luach “(s1 == NULL) || (s2 == NULL)” thachair mu 7 mìle uair. Lorg an siostam cuideachd neo-riaghailteachd “(s1 == NULL) | (s2 == NULL)” a nochd 32 tursan sa chraoibh.

Dh’ fhosgail Intel an còd siostam ionnsachaidh inneal ControlFlag gus biastagan sa chòd a chomharrachadh

Nuair a bhios tu a’ dèanamh anailis air a’ chriomag còd “ma tha (x = 7) y = x;” Tha an siostam air dearbhadh gu bheil an togail “caochlaideach == àireamh” mar as trice air a chleachdadh anns a’ ghnìomhaiche “ma tha” gus coimeas a dhèanamh eadar luachan àireamhach, agus mar sin tha e glè choltach gu bheil an comharra “caochlaideach = àireamh” anns an abairt “ma tha” air adhbhrachadh le a teip. Bhiodh sgrùdairean statach traidiseanta air a leithid de mhearachd a ghlacadh, ach eu-coltach riutha, chan eil ControlFlag a ’buntainn ri riaghailtean deiseil, anns a bheil e duilich ullachadh airson a h-uile roghainn a dh’ fhaodadh a bhith ann, ach tha e stèidhichte air staitistig mu chleachdadh diofar structaran ann an àireamh mhòr. de phròiseactan.

Mar dheuchainn, a’ cleachdadh ControlFlag ann an còd stòr goireas cURL, a tha gu tric air ainmeachadh mar eisimpleir de chòd àrd-inbhe agus deuchainneach, chaidh mearachd nach deach a lorg le sgrùdairean statach a chomharrachadh nuair a bha iad a’ cleachdadh an eileamaid structair “s-> glèidhidh”, aig an robh seòrsa àireamhach, ach chaidh a choimeas ris an luach Boolean TRUE . Anns a' chòd OpenSSL, a bharrachd air an duilgheadas a chaidh ainmeachadh gu h-àrd le "(s1 == NULL) ∧ (s2 == NULL)", chaidh neo-riaghailteachdan a chomharrachadh cuideachd anns na h-abairtean "(-2 == rv)" (bha an minus a typo) agus "BIO_puts (bp, ":")

Source: fosgailtenet.ru

Cuir beachd ann