QRCode Injection Zafiyetler

QRCode Injection

QRCode Injection

Mağazalarda, bilgisayarlarda, telefonlarda veya hayatımızın birçok alanında QRCode’lar ile karşılaşmışızdır. QRCode Injection zafiyetine değinmeden önce, QRCode’lardan biraz bahsedelim. QRCode’lar, bir kod bütününü resim formatına dönüştürerek zamandan tasarruf sağlar. Diyelim ki bir ürün hoşumuza gitti, satın alacağız ve üstünde QRCode var. Bu ürünün mağazadaki diğer ürünlerden ayırt edilmesini sağlayan, kendine ait bir kimlik numarası vardır, bu kimlik numarası yüzlerce basamağa kadar çıkabilir. Ürünün kimlik numarasını sisteme tek tek yazmak oldukça vakit alırken QRCode’u okutmamız sadece saniyelerimizi alacaktır. Örneğin, almak istediğimiz ürünün:

  • Kimlik numarası: URUN-ID-515646215265248
  • QRCode hali:

Bu resim formatının içerisinde ürünümüzün kimlik numarası gizlidir. Sisteme ürünün kimlik numarasını yazmak yerine saniyeler içerisinde QRCode’umuzu taratabiliriz.

Gelelim QRCode Injection zafiyetine. Bu zafiyet ise sistemin QRCode’u yorumlaması esnasında ortaya çıkmaktadır. Eğer biz URUN-ID-515646215265248 gibi saf bir değer yerine zararlı kodlar içeren bir değeri QRCode formatına dönüştürseydik, sistem QRCode’u çözerken o zararlı kodlarla karşılaşacak ve güvenlik açığı meydana gelecekti.

Bu zafiyet SQL injection, Cross Site Scripting, IDOR, Authentication Bypass gibi zafiyetler başta olmak üzere birçok zafiyeti beraberinde getirebilir. XSS zafiyetine sebebiyet verecek bir örnek yapalım.

https://www.the-qrcode-generator.com/ bu adresten QRCode üreteceğiz.

https://manateeworks.com/free-barcode-scanner bu adresten de QRCode’u decode edeceğiz.

Aşağıdaki QRCode Payload-<h1><b><u>InfinitumIT<script>confirm(‘infinitumit.com.tr’);</script> değerinin encode edilmiş halidir.

Şimdi bu QRCode’u manateeworks.com üzerinden decode edelim.

Gördüğünüz gibi sistem QRCode’u çözerken payload’umuzu okudu ve bir XSS güvenlik açığı meydana geldi.

Gereken güvenlik önlemleri alınmadığı takdirde, eğer sistem çözülen veriyi veritabanına işliyor olsaydı SQL injection gerçekleştirebilirdik. Bir başka örnek, bir ATM’de QRCode ile işlem yaparken önce ATM’nin  verdiği QRCode’u decode edip kodlarını incelerdik, içinde varsa para tutarını kendimize göre modifiye edip tekrar sisteme taratırdık böylece yüklü miktarda para çekebilirdik ki bu çok ciddi bir güvenlik sorunu olurdu. Farklı bir örnek, yine bir sanal mağaza aracılığıyla bize verilen QRCode’u decode edip ürünün fiyatını kendimize göre modifiye edebilirdik ve ürünü bedavaya getirtebilirdik.

Bu tarz saldırılardan korunmak için kullanıcıdan gelen QRCode’u bir süzgece tabii tutmalıyız ki sistem QRCode’u yorumlarken zararlı kodlarla karşılaşmasın.

Birlikte güvenli günlere…

InfinitumIT – https://infinitumit.com.tr

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir