{"id":11088,"date":"2022-10-05T12:44:21","date_gmt":"2022-10-05T09:44:21","guid":{"rendered":"https:\/\/www.kaspersky.com.tr\/blog\/?p=11088"},"modified":"2022-10-05T12:45:24","modified_gmt":"2022-10-05T09:45:24","slug":"tarfile-15-year-old-vulnerability","status":"publish","type":"post","link":"https:\/\/www.kaspersky.com.tr\/blog\/tarfile-15-year-old-vulnerability\/11088\/","title":{"rendered":"15 y\u0131ll\u0131k g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n tehlikeleri"},"content":{"rendered":"<p>Eyl\u00fcl 2022\u2019de Trellix, Python programlama dilinin standart kitapl\u0131\u011f\u0131n\u0131n bir par\u00e7as\u0131 olan ve herkes taraf\u0131ndan kullan\u0131labilen <a href=\"https:\/\/docs.python.org\/3\/library\/tarfile.html#module-tarfile\" target=\"_blank\" rel=\"noopener nofollow\">tarfile<\/a> mod\u00fcl\u00fcndeki g\u00fcvenlik a\u00e7\u0131\u011f\u0131na dair bir <a href=\"https:\/\/www.trellix.com\/en-us\/about\/newsroom\/stories\/research\/tarfile-exploiting-the-world.html\" target=\"_blank\" rel=\"noopener nofollow\">rapor<\/a> yay\u0131nlad\u0131. G\u00fcvenlik a\u00e7\u0131\u011f\u0131, sabit diskte istenen klas\u00f6re istenen dosyan\u0131n yaz\u0131lmas\u0131na ve baz\u0131 durumlarda k\u00f6t\u00fc ama\u00e7l\u0131 kod y\u00fcr\u00fct\u00fclmesine olanak sa\u011fl\u0131yor. Bu \u00e7al\u0131\u015fmay\u0131 dikkat \u00e7ekici k\u0131lansa tarfile mod\u00fcl\u00fcndeki bu sorunun 15 y\u0131l \u00f6nce, A\u011fustos 2007\u2019de <a href=\"https:\/\/mail.python.org\/pipermail\/python-dev\/2007-August\/074290.html\" target=\"_blank\" rel=\"noopener nofollow\">ke\u015ffedilmi\u015f olmas\u0131<\/a>! Ne var ki o zamanlar tehlikeli oldu\u011fu d\u00fc\u015f\u00fcn\u00fclmemi\u015f. Neden tehlikeli bulunmad\u0131\u011f\u0131n\u0131 ve bunun sonucunda Python geli\u015ftiricilerinin ve kullan\u0131c\u0131lar\u0131n\u0131n ne t\u00fcr sorunlarla kar\u015f\u0131la\u015fabilece\u011fini birlikte ke\u015ffedelim.<\/p>\n<h2>Ayr\u0131nt\u0131lar\u0131yla tarfile<\/h2>\n<p>Tarfile, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tar_(computing)\" target=\"_blank\" rel=\"noopener nofollow\">tar<\/a> ar\u015fivleriyle \u00e7al\u0131\u015fmaya y\u00f6nelik kodu i\u00e7eriyor. Tarihi 1979\u2019a kadar dayanan bu format, Unix benzeri i\u015fletim sistemlerinde yayg\u0131n olarak kullan\u0131l\u0131yor. Tar, y\u00fcksek say\u0131da dosyay\u0131 ve klas\u00f6r\u00fc saklaman\u0131n basit bir yolu. \u0130lk zamanlar manyetik bantlara yedek yazmak i\u00e7in kullan\u0131l\u0131yordu. G\u00fcn\u00fcm\u00fczde ise tar ar\u015fivleri opsiyonel olarak dosya s\u0131k\u0131\u015ft\u0131rma da kullanabiliyor. Bu t\u00fcr ar\u015fivleri olu\u015fturmak ve a\u00e7maktan ise tarfile sorumlu. Python geli\u015ftiricileri tarfile\u2019\u0131 bu t\u00fcr i\u015flerde haz\u0131r bir ara\u00e7 olarak kullan\u0131yor.<\/p>\n<p>Tarfile\u2019daki g\u00fcvenlik a\u00e7\u0131\u011f\u0131 ise olduk\u00e7a basit. A\u011fustos 2007\u2019deki orijinal <a href=\"https:\/\/mail.python.org\/pipermail\/python-dev\/2007-August\/074290.html\" target=\"_blank\" rel=\"noopener nofollow\">hata raporunda<\/a> olduk\u00e7a ayr\u0131nt\u0131l\u0131 \u015fekilde a\u00e7\u0131klanm\u0131\u015ft\u0131. Asl\u0131na bak\u0131l\u0131rsa tam olarak bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 bile say\u0131lmaz; durum yaln\u0131zca tarfile\u2019\u0131n ar\u015fiv a\u00e7\u0131ld\u0131\u011f\u0131 zaman ar\u015fivdeki klas\u00f6r yap\u0131s\u0131n\u0131 birebir \u015fekilde yeniden olu\u015fturmas\u0131ndan ibaret. Ar\u015fivdeki dosya ad\u0131n\u0131n \u201c..\/..\/..\/..\/..\/etc\/passwd\u201d gibi oldu\u011fu durumlar da buna dahil. Sistem y\u00f6neticisi olarak bu t\u00fcr bir ar\u015fivi a\u00e7arsan\u0131z passwd dosyas\u0131 ar\u015fivin bulundu\u011fu dizine yaz\u0131lm\u0131yor. Ar\u015fivi a\u00e7an ki\u015fi dosya yolundaki \/..\/ \u00f6\u011felerini izlerken \u00f6nce k\u00f6k dizine ula\u015f\u0131yor, ard\u0131ndan \/etc dizinindeki passwd dosyas\u0131n\u0131n \u00fczerine yaz\u0131yor. Linux\u2019te bu, t\u00fcm sistem kullan\u0131c\u0131lar\u0131n\u0131n verilerini saklayan normal dosyay\u0131 silmek anlam\u0131na geliyor.<\/p>\n<p>Buradaki tehlike \u015fu: Tarfile mod\u00fcl\u00fcn\u00fc kullanan bir program\u0131n kullan\u0131c\u0131s\u0131, normal bir ar\u015fivin normal a\u00e7\u0131l\u0131\u015f\u0131n\u0131n nas\u0131l bitece\u011fini bilmiyor. Hi\u00e7bir \u015fey olmayabilir, baz\u0131 dosyalar beklenmedik bir yerden \u00e7\u0131kabilir ya da baz\u0131 kullan\u0131c\u0131 dosyalar\u0131n\u0131n \u00fczerine yaz\u0131labilir. Hata raporunun yazar\u0131, tar ar\u015fivcisinin kendisinde bu hatan\u0131n 20 y\u0131ldan uzun s\u00fcre \u00f6nce, 2001\u2019de d\u00fczeltildi\u011finden bahsediyor. Ancak g\u00fcvenlik a\u00e7\u0131\u011f\u0131 tarfile\u2019da hi\u00e7 kapat\u0131lmam\u0131\u015f.<\/p>\n<h2>15 y\u0131ll\u0131k bekleyi\u015f<\/h2>\n<p>2007\u2019de potansiyel hata <a href=\"https:\/\/bugs.python.org\/issue1044#msg55464\" target=\"_blank\" rel=\"noopener nofollow\">tart\u0131\u015f\u0131ld\u0131ktan<\/a> sonra iki sebeple hi\u00e7bir \u015fey yap\u0131lmamas\u0131na karar verilmi\u015f. Birincisi, bu t\u00fcr bir dosya i\u015fleme Unix POSIX standard\u0131yla tamamen uyumlu (bunu do\u011frulayabiliriz). \u0130kinicisi, \u201cpratikte k\u00f6t\u00fcye kullan\u0131m olas\u0131l\u0131\u011f\u0131 yok\u201d. Kullan\u0131c\u0131 rehberine g\u00fcvenilir olmayan kaynaklardan gelen dosyalar\u0131 tarfile kullanarak a\u00e7man\u0131n tavsiye edilmedi\u011fini yazmak yeterli bulunmu\u015f.<\/p>\n<p>2022\u2019de Trellix pratikte k\u00f6t\u00fcye kullan\u0131m\u0131n m\u00fcmk\u00fcn oldu\u011funu kan\u0131tlay\u0131nca bu de\u011ferlendirmenin yanl\u0131\u015f oldu\u011fu ortaya \u00e7\u0131kt\u0131. \u00dcstelik yaln\u0131zca istenen yere veri yazmakla kal\u0131nm\u0131yor, ayn\u0131 zamanda istenen kod da y\u00fcr\u00fct\u00fclebiliyor. Bunun programc\u0131lar i\u00e7in bir kitapl\u0131k oldu\u011funu unutmay\u0131n; yani, sald\u0131r\u0131 olas\u0131l\u0131\u011f\u0131, tarfile mod\u00fcl\u00fcn\u00fcn kullan\u0131ld\u0131\u011f\u0131 yaz\u0131l\u0131ma ba\u011fl\u0131. Trellix iki \u00f6rnek veriyor.<\/p>\n<div id=\"attachment_11089\" style=\"width: 1034px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11089\" class=\"wp-image-11089 size-large\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/91\/2022\/10\/05124231\/tarfile-15-year-old-vulnerability-code-1024x332.jpg\" alt=\"\" width=\"1024\" height=\"332\"><p id=\"caption-attachment-11089\" class=\"wp-caption-text\">Universal Radio Hacker\u2019da g\u00fcvenlik a\u00e7\u0131\u011f\u0131 bulunan koddan bir kesit. <a href=\"https:\/\/www.trellix.com\/en-us\/about\/newsroom\/stories\/research\/tarfile-exploiting-the-world.html\" target=\"_blank\" rel=\"noopener nofollow\">Kaynak<\/a>.<\/p><\/div>\n<p>Birincisi, bilinmeyen kablosuz protokolleri analiz etmeye y\u00f6nelik bir program olan <a href=\"https:\/\/github.com\/jopohl\/urh\" target=\"_blank\" rel=\"noopener nofollow\">Universal Radio Hacker<\/a>. Program verileri projeler bi\u00e7iminde kaydediyor; bu projeler tar ile paketlenmi\u015f birden \u00e7ok dosyadan olu\u015fuyor. Ara\u015ft\u0131rmac\u0131lar, \u00f6nceden yap\u0131lm\u0131\u015f bir ar\u015fivi a\u00e7ma giri\u015fimi sonucunda y\u00fcr\u00fct\u00fclebilir bir dosyan\u0131n Windows otomatik y\u00fcr\u00fctme dizininine nas\u0131l yaz\u0131labildi\u011fini ortaya koymu\u015f. Bu sayede sistem bir sonraki defa yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda bu kod y\u00fcr\u00fct\u00fcl\u00fcyor. Bu g\u00fcvenlik a\u00e7\u0131\u011f\u0131, di\u011fer pek \u00e7ok \u015feyin yan\u0131 s\u0131ra, farkl\u0131 platformda da k\u00f6t\u00fcye kullan\u0131labilir.<\/p>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=jqs8S51_ENg\" target=\"_blank\" rel=\"noopener nofollow\">https:\/\/www.youtube.com\/watch?v=jqs8S51_ENg<\/a><\/p>\n<p>Videoda g\u00f6sterilen ikinci \u00f6rnek biraz daha karma\u015f\u0131k. <a href=\"https:\/\/www.spyder-ide.org\/\" target=\"_blank\" rel=\"noopener nofollow\">Spyder IDE<\/a> geli\u015ftirme ortam\u0131 verileri tar ar\u015fivlerinde depoluyor. Ara\u015ft\u0131rmac\u0131lar bu verileri i\u00e7e aktar\u0131rken \u00f6nce dosyay\u0131 sisteme yerle\u015ftirme deneyini tekrar etmi\u015f, fakat ard\u0131ndan daha da etkileyici bir \u015fey yapm\u0131\u015flar: Spyder bir sonraki kez ba\u015flat\u0131ld\u0131\u011f\u0131nda istenen kodun y\u00fcr\u00fct\u00fclmesini programlam\u0131\u015flar. Bu deneyin sonucu ise istenen kodun o anda sistem y\u00f6neticisi ayr\u0131cal\u0131klar\u0131yla y\u00fcr\u00fct\u00fclmesi iste\u011fi olmu\u015f.<\/p>\n<h2>\u00d6ng\u00f6r\u00fclemeyen sonu\u00e7lar<\/h2>\n<p>15 y\u0131ll\u0131k bu hatan\u0131n hikayesi, kural\u0131na uygun ols ve k\u00f6t\u00fcye kullan\u0131m yollar\u0131 a\u00e7\u0131k olmasa bile herhangi bir yere veri yazmaya olanak sa\u011flayan g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 asla hafife almamak gerekti\u011fini bir kez daha g\u00f6steriyor.<\/p>\n<p>Standart Python kitapl\u0131\u011f\u0131n\u0131n bir par\u00e7as\u0131 olan tarfile, (ba\u015fka sistemlerin de yan\u0131 s\u0131ra) neredeyse t\u00fcm Linux tabanl\u0131 sistemlerde bulunuyor. Ancak tehlike, g\u00fcvenlik a\u00e7\u0131\u011f\u0131 bulunan belirli bir fonksiyonda. Genel olarak s\u00f6ylemek gerekirse, Python\u2019da geli\u015ftirilen ve bir tarfile mod\u00fcl\u00fc kullanan t\u00fcm projeler birer g\u00fcvenlik a\u00e7\u0131\u011f\u0131. Son kullan\u0131c\u0131 a\u00e7\u0131s\u0131ndan bak\u0131ld\u0131\u011f\u0131nda bu biraz \u00e7etrefilli bir durum; potansiyel olarak g\u00fcvenli\u011fi a\u00e7\u0131\u011f\u0131 bulunan ve tar kulland\u0131\u011f\u0131n\u0131 bile bilmedikleri bir program \u00e7al\u0131\u015ft\u0131r\u0131yor olabilirler. Kaspersky uzmanlar\u0131 \u015funlar\u0131 \u00f6neriyor:<\/p>\n<ul>\n<li>G\u00fcvenilir olmayan kaynaklardan dosyalar\u0131n i\u015flenmesini s\u0131n\u0131rland\u0131r\u0131n;<\/li>\n<li>sald\u0131r\u0131 f\u0131rsat\u0131n\u0131 en aza indirmek i\u00e7in \u00fc\u00e7\u00fcnc\u00fc taraf programlar\u0131 en az ayr\u0131cal\u0131kla y\u00fcr\u00fct\u00fcn;<\/li>\n<li>g\u00fcvenlik a\u00e7\u0131\u011f\u0131 bulunan fonksiyonu kullanan programlar\u0131 belirlemek i\u00e7in kritik sistemlerde kullanan yaz\u0131l\u0131mlar\u0131 <a href=\"https:\/\/www.kaspersky.com.tr\/enterprise-security\/application-security\" target=\"_blank\" rel=\"noopener\">denetime sokun<\/a>.<\/li>\n<\/ul>\n<p>Geli\u015ftiriciler ise bu sorun, g\u00fcvenlik a\u00e7\u0131\u011f\u0131 bulunan bir fonksiyona \u00e7a\u011fr\u0131 olup olmad\u0131\u011f\u0131n\u0131 g\u00f6rmek ve gerekli d\u00fczeltmeleri yapmak \u00fczere kendi kodlar\u0131n\u0131 denetlemek i\u00e7in iyi bir sebep.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>S\u0131radan bir Python mod\u00fcl\u00fcn\u00fcn geli\u015ftiricileri k\u0131sa s\u00fcre \u00f6nce eski ve yamalanmam\u0131\u015f g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n neden tehlikeli olabilece\u011fini ke\u015ffetti.<\/p>\n","protected":false},"author":665,"featured_media":11091,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1726,1194],"tags":[790,2276,2592],"class_list":{"0":"post-11088","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-enterprise","8":"category-business","9":"tag-guvenlik-aciklari","10":"tag-linux","11":"tag-python"},"hreflang":[{"hreflang":"tr","url":"https:\/\/www.kaspersky.com.tr\/blog\/tarfile-15-year-old-vulnerability\/11088\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/tarfile-15-year-old-vulnerability\/24733\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/tarfile-15-year-old-vulnerability\/20204\/"},{"hreflang":"en-us","url":"https:\/\/usa.kaspersky.com\/blog\/tarfile-15-year-old-vulnerability\/27190\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/tarfile-15-year-old-vulnerability\/25059\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/tarfile-15-year-old-vulnerability\/25362\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/tarfile-15-year-old-vulnerability\/27821\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/tarfile-15-year-old-vulnerability\/34044\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/tarfile-15-year-old-vulnerability\/45703\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/tarfile-15-year-old-vulnerability\/19552\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/tarfile-15-year-old-vulnerability\/20133\/"},{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/tarfile-15-year-old-vulnerability\/29350\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/tarfile-15-year-old-vulnerability\/25486\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/tarfile-15-year-old-vulnerability\/31108\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/tarfile-15-year-old-vulnerability\/30798\/"}],"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\/11088","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=11088"}],"version-history":[{"count":1,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/posts\/11088\/revisions"}],"predecessor-version":[{"id":11090,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/posts\/11088\/revisions\/11090"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/media\/11091"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=11088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=11088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=11088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}