{"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\/news\/intel-otkryl-kod-sistemy-mashinnogo-obucheniya-controlflag-dlya-vyyavleniya-oshibok-v-kode","title":{"rendered":"Intel avas ControlFlag masin\u00f5ppe s\u00fcsteemi koodi, et tuvastada koodivead","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Intel avas v\u00e4lja ControlFlag teadusprojekti, mille eesm\u00e4rk on arendada v\u00e4lja masin\u00f5ppe s\u00fcsteem koodi kvaliteedi parandamiseks. Projekti raames loodud t\u00f6\u00f6riist v\u00f5imaldab tuvastada erinevaid vigu ja anomaaliaid k\u00f5rgema taseme keeles, nagu C\/C++, p\u00f5hinedes suurel hulgal olemasolevast koodist treenitud mudelile. S\u00fcsteem sobib erinevat t\u00fc\u00fcpi probleemide m\u00e4\u00e4ramiseks koodis, alates tr\u00fckivigade ja vale andmet\u00fc\u00fcbi kombinatsioonide tuvastamisest kuni NULL v\u00e4\u00e4rtuse kontrollide ja m\u00e4lu probleemide leidmiseni. ControlFlag kood on kirjutatud C++ keeles ja on avatud MIT litsentsi alusel.      <\/p>\n<p>S\u00fcsteem \u00f5pib iseseisvalt, ehitades statistilisi mudeleid olemasolevatest avatud projektide koodidest, mis on avaldatud GitHubis ja sarnastes avalikes hoidlates. Koolitusprotsessis tuvastab s\u00fcsteem t\u00fc\u00fcpilised koodistruktuuride mustrid ja koostab s\u00fcntaktilise puu \u00fchendustes nende mustrite vahel, peegeldades koodi teostamise voogu programmis. L\u00f5pptulemusena moodustub viimase otsuse puu, mis kogub k\u00f5ikide anal\u00fc\u00fcsitud l\u00e4htekoodide arenduse kogemused.     <\/p>\n<p>Katsutud koodi puhul toimub sarnane protsess mustrite m\u00e4\u00e4ratlemiseks, mis v\u00f5rreldakse viidatud otsuste tegemise puuga. Suured lahknevused naaberharudega viitavad anomaalia olemasolule uuritavas mustris. S\u00fcsteem v\u00f5imaldab mitte ainult tuvastada vea mustris, vaid ka pakkuda parandust. N\u00e4iteks OpenSSL koodis tuvastati konstruktsioon \u201e(s1 == NULL) \u2227 (s2 == NULL)\u201d, mida esines s\u00fcnteetilises puus vaid 8 korda, samas kui l\u00e4him haru v\u00e4\u00e4rtusega \u201e(s1 == NULL) || (s2 == NULL)\u201d esines umbes 7 tuhat korda. S\u00fcsteem tuvastas ka anomaalia \u201e(s1 == NULL) | (s2 == NULL)\u201d, mida esines puus 32 korda.      <center><img decoding=\"async\" alt=\"Intel avas ControlFlag masin\u00f5ppe s\u00fcsteemi koodi, et tuvastada koodivead \" src=\"\/wp-content\/uploads\/2021\/10\/f59e59e606a113aac675d44fd97845bd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Koodi fragmenti \u201eif (x = 7) y = x;\u201d anal\u00fc\u00fcsimisel tuvastas s\u00fcsteem, et tavaliselt kasutatakse \u201eif\u201d operaatoris, numbriliste v\u00e4\u00e4rtuste v\u00f5rdlemiseks konstruktsiooni \u201emuutuja == number\u201d, seet\u00f5ttu on v\u00e4ga t\u00f5en\u00e4oline, et \u201emuutuja = number\u201d v\u00e4ljendis \u201eif\u201d on p\u00f5hjustatud tr\u00fckiveast. Sellise vea oleks tuvastanud ka traditsioonilised staatilised anal\u00fcsaatorid, kuid ControlFlag, erinevalt neist, ei kasuta valmismudeleid, kus on raske ette n\u00e4ha k\u00f5iki v\u00f5imalikke variatsioone, vaid tugineb statistikale erinevate konstruktsioonide kasutamisest suure hulga projektide jooksul.     <\/p>\n<p>Katsena, kasutades ControlFlag'i, avastati cURL utiliidi l\u00e4htekoodis, mis on sageli kvaliteetse ja kontrollitud koodi n\u00e4iteks, staatiliste anal\u00fcsaatorite kaudu m\u00e4rkamatuks j\u00e4\u00e4nud viga struktuurielemendi \u201es-&gt;keepon\u201d kasutamisel, mis omas numbrilist t\u00fc\u00fcpi, kuid v\u00f5rreldes boolse v\u00e4\u00e4rtusega TRUE. OpenSSL koodis, peale \u00fclalmainitud probleemi \u201e(s1 == NULL) \u2227 (s2 == NULL)\u201d, tuvastati ka anomaaliad v\u00e4ljendites \u201e(-2 == rv)\u201d (miinus oli tr\u00fckiviga) ja \u201eBIO_puts(bp, ':-')\u201d.<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-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.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\/news\/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.1.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\/news\/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 koodi, et tuvastada koodivigu | ProHoster","description":"Ettev\u00f5te Intel avaldas ControlFlag uurimisprojekti t\u00f6\u00f6d, mille eesm\u00e4rk on luua masin\u00f5ppe s\u00fcsteem koodi kvaliteedi parandamiseks.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/news\/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\/news\/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}]}}