Yazarlar:
(1) Anna-Katharina Wickert, Technische Universität Darmstadt, Darmstadt, Almanya ([email protected]);
(2) Lars Baumgärtner, Technische Universität Darmstadt, Darmstadt, Almanya ([email protected]);
(3) Florian Breitfelder, Technische Universität Darmstadt, Darmstadt, Almanya ([email protected]);
(4) Mira Mezini, Technische Universität Darmstadt, Darmstadt, Almanya ([email protected]).
3 Licma ve 3.1 Tasarımının Tasarımı ve Uygulanması
4 Metodoloji ve 4.1 Python Uygulamalarını Arama ve İndirme
4.2 Önceki Çalışmalarla Karşılaştırma
5 Değerlendirme ve 5.1 GitHub Python Projeleri
6 Önceki çalışmalarla karşılaştırma
Arka Plan : Önceki çalışmalar, kripto API'leri kullanan Java uygulamalarının %99,59'a kadarının API'yi en az bir kez kötüye kullandığını göstermiştir. Ancak bu çalışmalar Java ve C üzerine yapılmış olup diğer dillere yönelik ampirik çalışmalar eksiktir. Örneğin, Python'da kripto görevleriyle ilgili kontrollü bir kullanıcı araştırması, profesyonel geliştiricilerin %68,5'inin bir kripto görevi için güvenli bir çözüm yazdığını göstermiştir.
Amaçlar : Bu gözlemin gerçek dünyadaki kodlar için geçerli olup olmadığını anlamak için Python'da kripto paraların kötüye kullanımına ilişkin bir çalışma yürüttük.
Yöntem : 5 farklı Python kripto API'sinin yaygın yanlış kullanımlarını kapsayan bir statik analiz aracı geliştirdik. Bu analizle GitHub'dan 895 popüler Python projesini ve gömülü cihazlar için 51 MicroPython projesini analiz ettik. Ayrıca sonuçlarımızı daha önce yapılan çalışmaların bulgularıyla karşılaştırdık.
Sonuçlar : Analizimiz Python projelerinin %52,26'sında en az bir yanlış kullanım olduğunu ortaya koyuyor. Ayrıca, bazı Python kripto kitaplıklarının API tasarımı, geliştiricilerin, Java ve C koduyla yürütülen çalışmalarda çok daha yaygın olan kripto işlevlerini kötüye kullanmalarına yardımcı olur. Sonuç : İyi API tasarımının Python uygulamaları için kriptonun kötüye kullanımı üzerinde olumlu bir etkisi görebildiğimiz sonucuna vardık. Ayrıca MicroPython projelerine yönelik analizimiz hibrit analizlerin önemini ortaya koyuyor.
Kriptografi (bundan böyle kripto olarak anılacaktır), günümüzde verilerimizi korumak ve gizliliği sağlamak için yaygın olarak kullanılmaktadır. Örneğin, kripto olmadan çevrimiçi bankacılığı güvenli bir şekilde kullanamaz veya çevrimiçi alışveriş yapamazdık. Ne yazık ki, önceki araştırma sonuçları kripto paranın sıklıkla güvensiz bir şekilde kullanıldığını gösteriyor [3, 4, 7, 9, 11]. Böyle bir sorun, şifreleme gibi kripto ilkelleri için güvenli olmayan blok modu gibi güvenli olmayan bir parametrenin seçilmesidir. Bu kötüye kullanımları tespit etmek için CryptoREX [13], CryptoLint [4], CogniCryptSAST [8] ve Cryptoguard [12] gibi birçok statik analiz aracı mevcuttur.
Bu araçlar ve ilgili çalışmalar Java ve C üzerinde yoğunlaşırken, kullanıcı çalışmaları mevcut Python API'lerinin kriptonun kötüye kullanım sayısını azalttığını öne sürüyor. Acar ve ark. [2] 307 GitHub kullanıcısıyla, kriptoyla ilgili 3 geliştirme görevini çözmesi gereken bir deney gerçekleştirdi. Profesyonel geliştiricilerin %68,5'inin verilen görev için Python'da güvenli bir çözüm yazdığını gözlemlediler. Basit kripto görevlerini çözmeye çalışan 256 Python geliştiricisiyle yapılan kontrollü bir deneyde Acar ve ark. [1], Python kitaplığı şifrelemesi gibi basit bir API tasarımının, geliştiricilerin güvenli kod yazma konusunda desteklediğini belirledi. Bununla birlikte, deneysel bir çalışma henüz Python'daki kripto suiistimallerinin Java veya C'ye göre daha az sıklıkta gerçekleştiğini doğrulamadı.
Python'daki kripto suiistimallerini ampirik olarak değerlendirmek için, 5 farklı Python kripto API'sini ve Java'nın JCA API'sini destekleyen çok dilli bir analiz çerçevesi olan LICMA'yı tanıtıyoruz. Tüm Python API'leri için 5 farklı kural [4] ve JCA'nın en yaygın kripto suiistimallerini tespit etmesi için 6 farklı kural [4] sağlıyoruz. LICMA ile GitHub'daki 895 popüler Python uygulamasını ve 51 MicroPython projesini Python'daki kötüye kullanımlara ilişkin bilgi edinmek için analiz ettik. Kripto kullanımı olan Python GitHub uygulamalarının %52,26'sında 1.501 kötüye kullanıma neden olan en az bir yanlış kullanım bulunduğunu tespit ettik. Toplamda, hatalı kullanımların yalnızca %7'si uygulama kodunun kendisindedir, geri kalan hatalı kullanımlar ise bağımlılıklardan kaynaklanmaktadır. Ayrıca MicroPython projeleri üzerinde yaptığımız çalışma, gömülü alandaki geliştiricilerin C kodu aracılığıyla kripto kullanma eğiliminde olduğunu ortaya koyuyor. Böylece, birden fazla dilde program bilgilerini (örneğin bir çağrı grafiği) takip edebilen hibrit statik analizlerin önemi ortaya çıkmaktadır [5, 10].
Python API'lerinin kripto suiistimallerine daha az eğilimli olup olmadığına dair anlayışımızı daha da geliştirmek için aşağıdaki katkılarda bulunuyoruz:
• Python ve Java'daki kripto suiistimallerini tespit etmek için yeni, çok dilli bir analiz aracı. Python için 5 yaygın Python kripto API'si için kriptonun kötüye kullanımlarını ve Java için standart API JCA'yı ele alıyoruz.
• GitHub'daki en popüler 895 Python uygulamasındaki kripto suiistimallerine ilişkin ampirik bir çalışma, 1.501 suiistimali ortaya çıkardı.
• Python uygulamalarındaki bulgularımızın, Android Uygulamaları için mevcut kripto suiistimalleri ve C'deki ürün yazılımı görüntüleri hakkındaki önceki çalışmalarla karşılaştırılması. Python uygulamalarının çoğunun daha güvenli olduğunu ve somut suiistimal türleri arasındaki dağılımın çok farklı olduğunu gözlemledik. .
• Hibrit statik analizlerin önemini ortaya koyan, MicroPython projelerindeki kripto suiistimallerine ilişkin ampirik bir çalışma.
• Çalışmamız için kullanılan her iki veri setini, analizimizin sonuçlarını ve LICMA kodunu[1] içeren bir replikasyon paketi.
[1] dx.doi.org/10.6084/m9.figshare.16499085