{"id":10311,"date":"2021-11-29T11:45:54","date_gmt":"2021-11-29T08:45:54","guid":{"rendered":"https:\/\/www.kaspersky.com.tr\/blog\/?p=10311"},"modified":"2021-11-29T11:45:54","modified_gmt":"2021-11-29T08:45:54","slug":"trojan-source","status":"publish","type":"post","link":"https:\/\/www.kaspersky.com.tr\/blog\/trojan-source\/10311\/","title":{"rendered":"Kaynak koduna yerle\u015ftirilmi\u015f g\u00f6r\u00fcnmeyen kodlar"},"content":{"rendered":"<p>Cambridge \u00dcniversitesi\u2019nden uzmanlar, \u00e7o\u011fu modern derleyiciyi etkiledi\u011fini ifade ettikleri bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 oldu\u011funu <a href=\"https:\/\/trojansource.codes\/trojan-source.pdf\" target=\"_blank\" rel=\"noopener nofollow\">a\u00e7\u0131klad\u0131lar<\/a>. Bu yeni bir sald\u0131r\u0131 y\u00f6ntemi, geli\u015ftirme ara\u00e7lar\u0131ndaki ge\u00e7erli bir \u00f6zelli\u011fi kullanarak farkl\u0131 bir kaynak kodu g\u00f6stermesine ra\u011fmen tamamen ba\u015fka bir \u015fey derliyor. Bu, Unicode denetim karakterlerindeki \u00f6zellik sayesinde ger\u00e7ekle\u015fiyor.<\/p>\n<div id=\"attachment_10312\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-10312\" class=\"wp-image-10312 size-large\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/91\/2021\/11\/29114033\/trojan-source-characters-1024x226.jpg\" alt=\"\" width=\"1024\" height=\"226\"><p id=\"caption-attachment-10312\" class=\"wp-caption-text\">Sald\u0131r\u0131lar\u0131n yeniden s\u0131ralanmas\u0131yla ilgili karakterleri bi\u00e7imlendiren Unicode y\u00f6nl\u00fcl\u00fc\u011f\u00fc. <a href=\"https:\/\/trojansource.codes\/trojan-source.pdf\" target=\"_blank\" rel=\"nofollow noopener\">Kaynak<\/a>.<\/p><\/div>\n<p>\u00a0<\/p>\n<p>Baz\u0131 edit\u00f6rler bunlar\u0131 g\u00f6sterse de \u00e7o\u011fu zaman denetim karakterleri, kodun geri kalan\u0131yla birlikte ekranda g\u00f6r\u00fcnmez ancak bir \u015fekilde metni de\u011fi\u015ftirirler. \u00d6rne\u011fin <a href=\"https:\/\/www.w3.org\/International\/articles\/inline-bidi-markup\/uba-basics\" target=\"_blank\" rel=\"noopener nofollow\">bu tabloda<\/a>, \u00c7ift Y\u00f6nl\u00fc Unicode (bidirectional \u2014 bidi) Algoritmas\u0131n\u0131n kodlar\u0131 yer al\u0131yor.<\/p>\n<p>B\u00fcy\u00fck olas\u0131l\u0131kla biliyorsunuzdur, baz\u0131 diller soldan sa\u011fa (\u00f6rne\u011fin \u0130ngilizce), baz\u0131lar\u0131 da sa\u011fdan sola (\u00f6rne\u011fin Arap\u00e7a) yaz\u0131l\u0131r. Kod yaln\u0131zca bir dil i\u00e7erdi\u011finde herhangi bir sorun yoktur, ancak \u00f6rne\u011fin bir sat\u0131rda \u0130ngilizce ve Arap\u00e7a s\u00f6zc\u00fckler olmas\u0131 gibi gereken hallerde bidi kodlar\u0131 metnin y\u00f6n\u00fcn\u00fc belirler.<\/p>\n<p>Yazarlar \u00e7al\u0131\u015fmalar\u0131nda, Python kodundaki yorum bitiriciyi sat\u0131r\u0131n ortas\u0131ndan sonuna ta\u015f\u0131yanlar gibi kodlar\u0131 kulland\u0131lar. Yaln\u0131zca birka\u00e7 karakteri kayd\u0131rmak i\u00e7in RLI kodu uygulad\u0131lar ve kalan\u0131 de\u011fi\u015ftirilmemi\u015f \u015fekilde b\u0131rakt\u0131lar.<\/p>\n<div id=\"attachment_10313\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-10313\" class=\"wp-image-10313 size-large\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/91\/2021\/11\/29114138\/trojan-source-example-1024x171.jpg\" alt=\"\" width=\"1024\" height=\"171\"><p id=\"caption-attachment-10313\" class=\"wp-caption-text\">Bidi kodlar\u0131n\u0131 kullanan Python kodu g\u00fcvenlik a\u00e7\u0131\u011f\u0131 \u00f6rne\u011fi. <a href=\"https:\/\/trojansource.codes\/trojan-source.pdf\" target=\"_blank\" rel=\"nofollow noopener\">Kaynak<\/a>.<\/p><\/div>\n<p>\u00a0<\/p>\n<p>Sa\u011fda, programc\u0131lar\u0131n kaynak kodunu kontrol ederken g\u00f6rd\u00fckleri; soldaysa, kodun y\u00fcr\u00fct\u00fcld\u00fc\u011f\u00fc hali yer al\u0131yor. \u00c7o\u011fu derleyici denetim karakterlerini yok sayar. Kodu kontrol eden herkes be\u015finci sat\u0131rda yer alan kodun zarars\u0131z bir yorum oldu\u011funu d\u00fc\u015f\u00fcn\u00fcr, ancak ger\u00e7ekte kodun i\u00e7ine gizlenen bir erken d\u00f6n\u00fc\u015f (early-return) komutu, program\u0131n banka hesab\u0131 bakiyesini bor\u00e7land\u0131ran i\u015flemi atlamas\u0131n\u0131 sa\u011flar. Di\u011fer bir deyi\u015fle bu \u00f6rnekteki sim\u00fcle edilen bankac\u0131l\u0131k program\u0131, paray\u0131 verecek ancak hesap bakiyesinden d\u00fc\u015fmeyecektir.<\/p>\n<h2>G\u00fcvenlik a\u00e7\u0131\u011f\u0131 neden tehlikeli?<\/h2>\n<p>\u0130lk bak\u0131\u015fta, g\u00fcvenlik a\u00e7\u0131\u011f\u0131 \u00e7ok basit gibi g\u00f6r\u00fcn\u00fcyor. Sonu\u00e7ta kim kaynak kodunu denetleyen ki\u015fileri kand\u0131rmak i\u00e7in g\u00f6r\u00fcnmez karakterler ekler ki? Buna kar\u015f\u0131n sorunun, bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 tan\u0131mlay\u0131c\u0131s\u0131 (<a href=\"https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2021-42574\" target=\"_blank\" rel=\"noopener nofollow\">CVE-2021-42574<\/a>) kullanmak zorunda kalacak kadar ciddi oldu\u011fu d\u00fc\u015f\u00fcn\u00fcld\u00fc. Yazarlar, geli\u015ftiricilere en \u00e7ok kullan\u0131lan derleyicileri bildirerek, bu derleyiciler i\u00e7in makale yay\u0131nlanmadan \u00f6nce yama \u00e7\u0131karma f\u0131rsat\u0131 sundular.<\/p>\n<p>Raporda, genel hatlar\u0131yla temel sald\u0131r\u0131 yetenekleri anlat\u0131l\u0131yor. Yorumlar\u0131n i\u00e7ine bir komut gizlemek ve \u00f6rne\u011fin ekranda g\u00f6r\u00fcnen bir sat\u0131rdaki herhangi bir \u015feyi gizlemek i\u00e7in iki y\u00fcr\u00fctme stratejisi kullan\u0131l\u0131yor. Teoride, komuta benzeyen ancak asl\u0131nda bir yorumun par\u00e7as\u0131 olan ve y\u00fcr\u00fct\u00fclmeyecek bir kod olu\u015fturmak gibi tam tersi bir durum da s\u00f6z konusu olabilir. Bu g\u00fcvenlik a\u00e7\u0131\u011f\u0131ndan yararlanma konusunda elbette \u00e7ok daha yarat\u0131c\u0131 y\u00f6ntemlerin kullan\u0131lmas\u0131 s\u00f6z konusu.<\/p>\n<p>\u00d6rne\u011fin birisi bu y\u00f6ntem ile karma\u015f\u0131k bir tedarik zinciri sald\u0131r\u0131s\u0131 ger\u00e7ekle\u015ftirmek i\u00e7in y\u00fcklenici taraf\u0131ndan \u015firkete sunulan ve do\u011fru gibi g\u00f6r\u00fcnen ancak istendi\u011fi \u015fekilde \u00e7al\u0131\u015fmayan bir kod kullanabilir. Ard\u0131ndan \u00fcr\u00fcn piyasaya s\u00fcr\u00fcld\u00fckten sonra ba\u015fka bir taraf, m\u00fc\u015fterilere sald\u0131rmak i\u00e7in bu \u201calternatif fonksiyonu\u201d kullanabilir.<\/p>\n<h2>Peki g\u00fcvenlik a\u00e7\u0131\u011f\u0131 ger\u00e7ekte ne kadar tehlikeli?<\/h2>\n<p>Makale yay\u0131nland\u0131ktan k\u0131sa bir s\u00fcre sonra programc\u0131 Russ Cox Truva Kayna\u011f\u0131 sald\u0131r\u0131s\u0131 konusundaki ele\u015ftirilerini ifade etti. En hafif tabirle, bu y\u00f6ntem onu \u00e7ok etkilememi\u015fti. Bununla ilgili \u00f6ne s\u00fcrd\u00fc\u011f\u00fc arg\u00fcmanlar ise \u015fu \u015fekilde:<\/p>\n<ul>\n<li>S\u00f6z konusu y\u00f6ntem hi\u00e7 de yeni bir sald\u0131r\u0131 de\u011fil,<\/li>\n<li>Bir\u00e7ok kod d\u00fczenleyicide, \u201cg\u00f6r\u00fcnmeyen\u201d kodu g\u00f6stermek i\u00e7in s\u00f6z dizim vurgusu (syntax highlighting) \u00f6zelli\u011fi bulunuyor,<\/li>\n<li>Derleyiciler i\u00e7in yama yay\u0131nlanmas\u0131na gerek yok \u2014 yanl\u0131\u015fla yap\u0131lan veya k\u00f6t\u00fc niyetli hatalar\u0131 tespit etmek i\u00e7in kodun dikkatlice kontrol edilmesi yeterli.<\/li>\n<\/ul>\n<p>Ger\u00e7ekten de, Unicode denetim karakterleriyle ilgili sorunun ortaya \u00e7\u0131k\u0131\u015f tarihi <a href=\"https:\/\/github.com\/golang\/go\/issues\/20209\" target=\"_blank\" rel=\"noopener nofollow\">2017<\/a>\u2018ye kadar gidiyor. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Homoglyph\" target=\"_blank\" rel=\"noopener nofollow\">Homogliflerle<\/a> ilgili benzer \u2013 ayn\u0131 g\u00f6r\u00fcnen ancak farkl\u0131 kodlar\u0131 olan karakterler \u2013 ve ayr\u0131ca manuel kontrollerde gereksiz kodlar\u0131n s\u0131zmas\u0131n\u0131 sa\u011flayabilen sorun da pek yeni say\u0131lmaz.<\/p>\n<p>Bununla birlikte Cox\u2019un ele\u015ftirel analizi, sorunun varl\u0131\u011f\u0131n\u0131 inkar etmiyor, aksine raporlar\u0131, gazeteci Brian Krebs\u2019in korkutucu <a href=\"https:\/\/krebsonsecurity.com\/2021\/11\/trojan-source-bug-threatens-the-security-of-all-code\/\" target=\"_blank\" rel=\"noopener nofollow\">T\u00fcm Kodlar\u0131n G\u00fcvenli\u011fini Tehdit Eden \u2018Trojan Kayna\u011f\u0131\u2019 Hatas\u0131<\/a> yaz\u0131s\u0131nda oldu\u011fu gibi a\u015f\u0131r\u0131 dramatik olmakla su\u00e7luyor.<\/p>\n<p>Ger\u00e7ekten ortada bir sorun var ama neyse ki \u00e7\u00f6z\u00fcm\u00fc de olduk\u00e7a basit. Halihaz\u0131rda yay\u0131nlanan veya yak\u0131nda yay\u0131nlanmas\u0131 beklenen t\u00fcm yamalar, bu t\u00fcr karakterlerin yer ald\u0131\u011f\u0131 kodun derlenmesini engelleyecektir. (Mesela, Rust derleyicisinin geli\u015ftiricileri taraf\u0131ndan payla\u015f\u0131lan bu <a href=\"https:\/\/blog.rust-lang.org\/2021\/11\/01\/cve-2021-42574.html\" target=\"_blank\" rel=\"noopener nofollow\">g\u00fcvenlik dan\u0131\u015fma<\/a> belgesine g\u00f6z at\u0131n.) Kendi yaz\u0131l\u0131m olu\u015fturma ara\u00e7lar\u0131n\u0131z\u0131 kullan\u0131yorsan\u0131z, normalde kaynak kodunda bulunmamas\u0131 gereken gizli karakterler i\u00e7in de benzer bir denetim eklemenizi \u00f6neriyoruz.<\/p>\n<h2>Tedarik zinciri sald\u0131r\u0131lar\u0131n\u0131n tehlikeleri<\/h2>\n<p>Bir\u00e7ok \u015firket, geli\u015ftirme s\u00fcre\u00e7lerini y\u00fcklenicilere yapt\u0131r\u0131yor veya projelerinde haz\u0131r a\u00e7\u0131k kaynakl\u0131 mod\u00fcller kullan\u0131yor. Bu durum da her zaman <a href=\"https:\/\/encyclopedia.kaspersky.com\/glossary\/supply-chain\/\" target=\"_blank\" rel=\"noopener\">tedarik zinciri<\/a> yoluyla d\u00fczenlenen sald\u0131r\u0131lar\u0131na a\u00e7\u0131k kap\u0131 b\u0131rak\u0131yor. Siber su\u00e7lular, bir y\u00fcklenicinin g\u00fcvenli\u011fini ihlal etmi\u015f olabilir veya kodu a\u00e7\u0131k kaynakl\u0131 bir projeye g\u00f6mebilir ve k\u00f6t\u00fc ama\u00e7l\u0131 kodu yaz\u0131l\u0131m\u0131n nihai s\u00fcr\u00fcm\u00fcne yerle\u015ftirebilir. Kod denetimleri genellikle bu t\u00fcr arka kap\u0131lar\u0131 ortaya \u00e7\u0131karsa da e\u011fer denetim yap\u0131lm\u0131yorsa, son kullan\u0131c\u0131lar yaz\u0131l\u0131m\u0131 g\u00fcvenilir kaynaklardan edinmesine ra\u011fmen verilerini kaybedebilir.<\/p>\n<p>Trojan Kayna\u011f\u0131, olduk\u00e7a zekice d\u00fc\u015f\u00fcn\u00fclm\u00fc\u015f bir sald\u0131r\u0131 \u00f6rne\u011fidir. Sald\u0131rganlar, megabaytlarca k\u00f6t\u00fc ama\u00e7l\u0131 kodu nihai bir \u00fcr\u00fcne yerle\u015ftirmeye \u00e7al\u0131\u015fmak yerine, yaz\u0131l\u0131m\u0131n kritik bir par\u00e7as\u0131na tespit edilmesi zor bir ekleme ile yerle\u015ftirmek ve y\u0131llarca bundan faydalanmak i\u00e7in b\u00f6yle bir yakla\u015f\u0131m\u0131 kullanabilir.<\/p>\n<h2>Kendinizi koruman\u0131n yollar\u0131<\/h2>\n<p>Truva At\u0131 Kayna\u011f\u0131 t\u00fcr\u00fc sald\u0131r\u0131lara kar\u015f\u0131 korunmak i\u00e7in:<\/p>\n<ul>\n<li>Kulland\u0131\u011f\u0131n\u0131z programlama dili derleyicilerine ili\u015fkin yamaya yay\u0131nland\u0131ysa, kulland\u0131\u011f\u0131n\u0131z t\u00fcm derleyicileri g\u00fcncelleyin,<\/li>\n<li>Kaynak kodunda belirli bir dizi denetim karakterini alg\u0131layan kendi komut dosyalar\u0131n\u0131z\u0131 yaz\u0131n.<\/li>\n<\/ul>\n<p>Daha geni\u015f anlamda, potansiyel tedarik zinciri sald\u0131r\u0131lar\u0131na kar\u015f\u0131 m\u00fccadele etmek i\u00e7in hem manuel kod denetimleri hem de bir dizi otomatik test yap\u0131lmas\u0131n\u0131 gerekiyor. T\u00fcm g\u00fcvenlik mekanizmas\u0131n\u0131 bozabilecek bu basit hatay\u0131 tespit etmeye \u00e7al\u0131\u015f\u0131rken kendi yazd\u0131\u011f\u0131n\u0131z koda siber su\u00e7lular\u0131n perspektifinden bakman\u0131n asla zarar\u0131 olmaz. Bu t\u00fcr bir analiz i\u00e7in kurum i\u00e7i kaynaklara sahip de\u011filseniz, <a href=\"https:\/\/www.kaspersky.com.tr\/enterprise-security\/cybersecurity-services?icid=tr_kdailyplacehold_acq_ona_smm__onl_b2b_kasperskydaily_wpplaceholder_______\" target=\"_blank\" rel=\"noopener\">\u015firket d\u0131\u015f\u0131ndan uzmanlar<\/a> ile ba\u011flant\u0131 kurmay\u0131 d\u00fc\u015f\u00fcn\u00fcn.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"kesb-b2b\">\n","protected":false},"excerpt":{"rendered":"<p>Cambridge&#8217;deki ara\u015ft\u0131rmac\u0131lar, kaynak koduna gizli kod yerle\u015ftirmek i\u00e7in kullan\u0131lan Truva At\u0131 Kayna\u011f\u0131 y\u00f6ntemini anlat\u0131yor.<\/p>\n","protected":false},"author":665,"featured_media":10314,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1726,1194,1727],"tags":[2228,790,1611],"class_list":{"0":"post-10311","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-enterprise","8":"category-business","9":"category-smb","10":"tag-gelistirme","11":"tag-guvenlik-aciklari","12":"tag-tedarik-zinciri"},"hreflang":[{"hreflang":"tr","url":"https:\/\/www.kaspersky.com.tr\/blog\/trojan-source\/10311\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/trojan-source\/23678\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/trojan-source\/19130\/"},{"hreflang":"ar","url":"https:\/\/me.kaspersky.com\/blog\/trojan-source\/9584\/"},{"hreflang":"en-us","url":"https:\/\/usa.kaspersky.com\/blog\/trojan-source\/25764\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/trojan-source\/23819\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/trojan-source\/23457\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/trojan-source\/26486\/"},{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/trojan-source\/26051\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/trojan-source\/31982\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/trojan-source\/42987\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/trojan-source\/18579\/"},{"hreflang":"pl","url":"https:\/\/plblog.kaspersky.com\/trojan-source\/15568\/"},{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/trojan-source\/27789\/"},{"hreflang":"ja","url":"https:\/\/blog.kaspersky.co.jp\/trojan-source\/32001\/"},{"hreflang":"nl","url":"https:\/\/www.kaspersky.nl\/blog\/trojan-source\/27870\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/trojan-source\/24631\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/trojan-source\/29994\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/trojan-source\/29798\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.com.tr\/blog\/tag\/guvenlik-aciklari\/","name":"g\u00fcvenlik a\u00e7\u0131klar\u0131"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/posts\/10311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/users\/665"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=10311"}],"version-history":[{"count":1,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/posts\/10311\/revisions"}],"predecessor-version":[{"id":10315,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/posts\/10311\/revisions\/10315"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/media\/10314"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=10311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=10311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=10311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}