{"id":101737,"date":"2021-10-24T22:22:41","date_gmt":"2021-10-24T20:22:41","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/intel-otkryl-kod-sistemy-mashinnogo-obucheniya-controlflag-dlya-vyyavleniya-oshibok-v-kode"},"modified":"2021-10-24T22:22:41","modified_gmt":"2021-10-24T20:22:41","slug":"intel-otkryl-kod-sistemy-mashinnogo-obucheniya-controlflag-dlya-vyyavleniya-oshibok-v-kode","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/intel-otkryl-kod-sistemy-mashinnogo-obucheniya-controlflag-dlya-vyyavleniya-oshibok-v-kode","title":{"rendered":"Intel avas ControlFlag masin\u00f5ppe s\u00fcsteemi koodi, et avastada koodis vigu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Intel avas arendustegevused, mis on seotud uurimisprojekti ControlFlagga, mille eesm\u00e4rk on luua masin\u00f5ppimise s\u00fcsteem koodi kvaliteedi parandamiseks. Projekti k\u00e4igus v\u00e4lja t\u00f6\u00f6tatud t\u00f6\u00f6riist v\u00f5imaldab tuvastada mitmesuguseid vigu ja anomaaliyaid k\u00f5rgema taseme keeltes, nagu C\/C++, p\u00f5hinedes mudelil, mis on koolitatud suure hulga olemasoleva koodi maandumiseks. S\u00fcsteem sobib erinevat t\u00fc\u00fcpi probleemide m\u00e4\u00e4ramiseks koodis, alates tr\u00fckivigade ja vale t\u00fc\u00fcpide kombinatsioonide kindlakstegemisest kuni NULL-v\u00e4\u00e4rtuse kontrollide ja m\u00e4lu probleemide tuvastamiseni. ControlFlagi kood on kirjutatud C++ keeles ja avatud MIT litsentsi alusel.      <\/p>\n<p>S\u00fcsteem \u00f5pib iseseisvalt, ehitades statistilise mudeli olemasolevast avatud projektide koodist, mis on avaldatud GitHubis ja sarnastes avalikes repos. \u00d5ppimise etapis tuvastab s\u00fcsteem t\u00fc\u00fcpilised koodistruktuuride malli struktureerimise mustrid ja loob s\u00fcntaktilise seose puu nende mallide vahel, mis peegeldab koodi t\u00e4itmise voogu programmis. L\u00f5puks moodustatakse standardne otsuste tegemise puu, mis koondab k\u00f5igi anal\u00fc\u00fcsitud l\u00e4htekoodide arenduse kogemuse.     <\/p>\n<p>Kontrollitud koodi puhul toimub sarnane protsess mustrite m\u00e4\u00e4ratlemiseks, mis v\u00f5rreldakse viidatud otsustuspuu mudeliga. Suured erinevused naaberharudega viitavad anomaaliale kontrollitavas mustris. S\u00fcsteem v\u00f5imaldab mitte ainult tuvastada mustris viga, vaid ka pakkuda parandust. N\u00e4iteks OpenSSL koodis tuvastati konstruktsioon &#171;(s1 == NULL) &#8743; (s2 == NULL)&#187;, mida kohtas s\u00fcntaksipuus vaid 8 korda, samas kui l\u00e4him haru v\u00e4\u00e4rtusega &#171;(s1 == NULL) || (s2 == NULL)&#187; esines umbes 7000 korda. S\u00fcsteem tuvastas ka anomaalia &#171;(s1 == NULL) | (s2 == NULL)&#187;, mida esines puus 32 korda.      <center><img decoding=\"async\" alt=\"Intel avas ControlFlag masin\u00f5ppe s\u00fcsteemi koodi, et avastada koodis vigu \" src=\"\/wp-content\/uploads\/2021\/10\/f59e59e606a113aac675d44fd97845bd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Koodi fragmenti &#171;if (x = 7) y = x;&#187; anal\u00fc\u00fcsimisel tuvastas s\u00fcsteem, et tavaliselt kasutatakse &#171;if&#187; operaatoris numbriliste v\u00e4\u00e4rtuste v\u00f5rdlemiseks konstruktsiooni &#171;muutuja == number&#187;, seega on suure t\u00f5en\u00e4osusega &#171;muutuja = number&#187; kasutamine v\u00e4ljendis &#171;if&#187; p\u00f5hjustatud n\u00e4puvigast. Sellise vea oleks avastanud ka traditsioonilised staatilised anal\u00fcsaatorid, kuid erinevalt neist ei kasuta ControlFlag valmis reegleid, milles on keeruline arvesse v\u00f5tta k\u00f5iki v\u00f5imalikke variatsioone, vaid tugineb statistikale erinevate konstruktsioonide kasutamise kohta paljudes projektides.     <\/p>\n<p>Eksperimendi k\u00e4igus tuvastas ControlFlag utiliidi cURL allikatekstides, mis on sageli toodud kvaliteetse ja testitud koodina, staatiliste anal\u00fcsaatorite poolt t\u00e4helepanuta j\u00e4\u00e4nud vea struktuurielemendi &#171;s-&gt;keepon&#187; kasutamisel, millel oli numbriline t\u00fc\u00fcp, kuid mille v\u00e4\u00e4rtus v\u00f5rreldakse boolse v\u00e4\u00e4rtusega TRUE. OpenSSL koodis, peale eespool mainitud &#171;(s1 == NULL) &#8743; (s2 == NULL)&#187; probleemi, tuvastati ka anomaaliad v\u00e4ljendites &#171;(-2 == rv)&#187; (miinus oli n\u00e4puviga) ja &#171;BIO_puts(bp, &#171;:&#187;).<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=56018\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Intel \u043e\u0442\u043a\u0440\u044b\u043b\u0430 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c ControlFlag, \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0451\u043c\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a C\/C++. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0434\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":101738,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-101737","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Intel \u043e\u0442\u043a\u0440\u044b\u043b\u0430 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c ControlFlag, \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/intel-otkryl-kod-sistemy-mashinnogo-obucheniya-controlflag-dlya-vyyavleniya-oshibok-v-kode\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Intel \u043e\u0442\u043a\u0440\u044b\u043b \u043a\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f ControlFlag \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043a\u043e\u0434\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Intel \u043e\u0442\u043a\u0440\u044b\u043b\u0430 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c ControlFlag, \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/intel-otkryl-kod-sistemy-mashinnogo-obucheniya-controlflag-dlya-vyyavleniya-oshibok-v-kode\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2021-10-24T20:22:41+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-10-24T20:22:41+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Intel avas masin\u00f5ppe s\u00fcsteemi ControlFlag l\u00e4htekoodi, et tuvastada koodivigu | ProHoster","description":"Intel on avalikustanud teadust\u00f6\u00f6 ControlFlag, mille eesm\u00e4rk on arendada masin\u00f5ppe s\u00fcsteemi, et parandada koodikvaliteeti.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/intel-otkryl-kod-sistemy-mashinnogo-obucheniya-controlflag-dlya-vyyavleniya-oshibok-v-kode","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Intel \u043e\u0442\u043a\u0440\u044b\u043b \u043a\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f ControlFlag \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043a\u043e\u0434\u0435 | ProHoster","og:description":"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Intel \u043e\u0442\u043a\u0440\u044b\u043b\u0430 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c ControlFlag, \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430.","og:url":"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/intel-otkryl-kod-sistemy-mashinnogo-obucheniya-controlflag-dlya-vyyavleniya-oshibok-v-kode","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2021-10-24T20:22:41+00:00","article:modified_time":"2021-10-24T20:22:41+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"101737","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-10-24 20:24:32","updated":"2022-10-04 22:00:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/101737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=101737"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/101737\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/101738"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=101737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=101737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=101737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}