Android Uygulamalarda Güvensiz Veri Depolama – M2

Android işletim sistemi uygulamalara istedikleri verileri depolayabilmeleri için izole edilmiş bir alan tahsis eder, buna Internal Storage denir. Uygulama kullanıcı adı ve şifre gibi hassas verileri saklamak istediğinde Internal Storage bu işlemin gerçekleşebileceği yerdir. Android sandbox bir uygulamanın internal storage alanına diğer uygulamaların erişebilmesini engeller. Birçok geliştirici hassas verileri herhangi bir şifreleme işleminden geçirmeden internal stroage üzerinden saklamayı tercih eder.
Kullanıcı adları, yetkilendirme şifreleri ya da tokenları, çerezler, lokasyon bilgisi, kalıcı uygulama logları ya da debug bilgisi, ön belleklinmiş uygulama mesajları ya da transaction geçmişi, UDID, EMEI, kişisel bilgiler, kredi kartı veya hesap bilgisi gibi bilgiler hassas veriler olarak tanımlanabilir.
Geliştiriciler söz konusu hassas verileri SQLite veritabanlarında, log dosyalarında, plist dosyalarında, XML veri dosyalarında ya da Manifest dosyasında, binary dosyalarda, çerez dosyalarında, SD kart içerisinde ya da Bulut üzerinde depolayabilir.
İlk olarak 2010 yılında kullanıcıların rapor ettiği bildirimde (https://code.google.com/p/android/issues/detail?id=10809) e-posta bilgisinin SQL Lite veritabani üzerinde açık (cleartext) olarak tutulduğu tespit edilmiştir. Buna karşılık Android geliştirici takımı e-posta bilgisinin şifrelenmemesinin birçok nedeni olduğunu ve yetkisiz erişimlere karsı önlem alındığını belirtmiştir. Belirtilen nedenlerden ilki ise kullanılabilirliktir (https://developer.pidgin.im/wiki/PlainTextPasswords).
Güvensiz şekilde depolanan hassas verinin sızması kimlik hırsızlığı, sahtekarlık, itibar kaybı ve veri kaybı gibi sonuçlar doğurabilir.
Test Ortamı
Test ortamında InsecureBankv2 isimli uygulama kurulmuş ve güvensiz veri depolama test edilmiştir. Uygulama kurulduktan sonra ağ içerisinde verileri karşılaması için uygulama ile beraber gelen “app.py” isimli scripti çalıştırılır. Aşağıda test ortamında yapılan ayarlar gösterilmiştir.
C:UsersuserPicturesayar.png
Ardından aşağıdaki ekran görüntüsünde bulunan dinesh/Dinesh@123$ hesap bilgileri ile giriş yapılmıştır.
C:UsersuserPictureslogın.png
Giriş yapıldıktan sonra aşağıdaki ekran ile karşılaşılmıştır.
C:UsersuserPicturesgırıs.png
Uygulamaya giriş yapılmıştır bu noktadan sonra cihaz üzerinde uygulamanın kullandığı SQLite veritabanı görüntülenmiştir ve uygulamaya giriş yaparken kullanılan kullanıcı adının depolandığı tespit edilmiştir. SQLite veritabanlarının içeriğini görüntüleyebilmek için bir çok uygulama bulunmaktadır ve Google Play Store’dan indirilebilir.
C:UsersuserPicturesdb.png
Test ortamındaki uygulamada kullanıcı adı SQLite veritabanı üzerinde depolanmaktaydı bunun dışında yukarıda listelenen hassas veri sınıfına giren verilerde depolanabilirdi.
Örnek olarak 05.12.2014 tarihinde yayınlanan rapora göre Yahoo Messenger Android uygulamasında güvensiz veri depolama zafiyeti bulunmaktaydı. Uygulamayı kullanan kişinin kayıtlı/eklenmiş arkadaş listesine, reddedilen kullanıcıların listesine ve en önemlisi chat kayıtlarına açık şekilde “/data/data/com.yahoo.mobile.client.android.im/databases/” dizini altında bulunan veritabanlarından erişilebilmekteydi.
Geliştirici güvenlik adına hassas verileri depolarken şifrelemeyi seçebilir ancak saldırganlar şifreleme anahtarını çalabilir. Şifreleme anahtarı bir kez ele geçirildiğinde hassas veriler kolayca ele geçirilebilir.