Mobil uygulama kullanırken güvende misiniz?
Mobil uygulama kullanırken güvende misiniz?
Mobil uygulamalarınızın ne kadar güvenli olduğunu biliyor musunuz? Siber tehdit biçimlerinin hızla gelişmesi ve bilgisayar korsanlarının saldırı sıklığının artmasıyla birlikte, mobil uygulamaların ve teknolojik ortamda depolanan hassas verilerin güvenliği de daha sık gündeme geliyor.
Teknolojinin gelişmesiyle birlikte siber saldırılar oldukça donanımlı hale geldi ve bilgisayar korsanları sistem açıklarını artık daha detaylı yakalayabiliyorlar. Bu durum da beraberinde şirketlerin güvenlik önlemlerini arttırması gerektiği gerçeğini getiriyor. Büyük şirketler kullanıcı verilerinin güvende kalması için büyük miktarda paralar ödeyerek önlem alıyor ancak bazen bu bile yeter olmayabiliyor.
Güvensiz Veri Depolama
Mobil uygulamalar; Konum, ad, kredi kartı numarası, kişiler gibi büyük miktarda hassas kullanıcı verisi içeriyor. Bu verilerin sızması, uygulama kullanıcıları ve şirket açısından çok büyük sorunlara neden olabilir. Bu sebeple mobil uygulama geliştiricilerin güvenli bir şekilde veri depolamaya dikkat etmesi gerekiyor.
Cep telefonunda saklanan veriler daima şifrelenmelidir. İOS dosya sistemi bunu varsayılan olarak yapar, ancak Android sistemi şifrelenmez, bu yüzden bir uygulama geliştirirken göz önünde bulundurulması gereken ilk şey şifreleme olmalıdır. Veri güvenliğini artırmak için ek üçüncü taraf şifreleme kullanmanızı öneririz. Ayrıca, HTML5’in verileri kaydetme biçimine de dikkat etmelisiniz.
Uygulamanızın verileri önbelleğe alma ve kaydetme şeklini kontrol edin. Kullanıcı uygulamayı kapattıktan sonra; uygulamanın verileri temizlemesi ve arka planda iken verilerin maskelenmesi istenir.
Şifreleme Eksikliği
Verileri güvende tutmak istiyorsanız, veri şifreleme mutlak bir zorunluluktur. Şifreleme, ilk verileri farklı bir formata dönüştürmenin bir yoludur, bu nedenle onu okumak veya çalmak çok daha zor hatta imkansız hale gelir.
Mobil cihazda verileri şifrelemenin iki yolu vardır:
Yazılım tabanlı şifreleme: Şifreleme anahtarlarını üretmek ve doğrulamak için özel yazılımların kullanılması anlamına gelir. Bu yöntem Google tarafından tercih edilir ve daha yaygın ve evrensel olarak kabul edilir.
Donanım tabanlı şifreleme: Şifreleme anahtarlarını üreten ve doğrulayan bir donanım parçasının (yani şifreleme motoru) kullanılması anlamına gelir. Bu, Apple tarafından tercih edilen bir yöntemdir ve yazılım tabanlı şifrelemeden daha maliyetlidir.
Kimlik Doğrulama
Kimlik doğrulama ve yetkilendirme, mobil uygulama güvenliğindeki en zayıf noktalardan biridir. Hackerların uygulamanın kimlik doğrulama sistemini kandırabilmesi için düzinelerce yol vardır.
Kimlik doğrulama güvenliğini sağlamak için 8 basamaklı bir şifre istemekten çok daha fazlası var:
Giriş yapma denemelerinin sayısını sınırlayın.
- Güçlü bir şifre kullanın.
- Şifreleri ve PIN’leri şifreli de tutun.
- Oturum süresinin dolması özelliğini aktifleştirin.
- Mümkünse biyometrik kimlik doğrulamayı kullanın.
Uygulama Güncellemeleri
Bir mobil uygulama güncelleme gerektirdiğinde, bunun nedeni geliştiricilerin başka bir fikir ortaya çıkarmaları değildir. Güncelleme aslında uygulamayı daha güvenli hale getirme yollarından biridir.
Güvenlik yamaları, boşluklara dikkat eden ve mevcut hataları ortadan kaldıran küçük kod parçacıklarıdır. Bu yamalar uygulama güncellemeleriyle birlikte gelir, bu nedenle geliştiriciler için düzenli olarak bu güncellemeleri sağlamak ve uygulamanın yamalı olmasını sağlamak önemlidir. Her ne kadar basit görünmekle birlikte, hala olası korsan saldırılarına karşı daha savunmasız hale gelen çok sayıda yamalı olmayan uygulama bulunmaktadır.
Güvenli Olmayan Sunucu
Mobil Uygulamalarda Alınabilecek Güvenlik Önlemleri
Açık kaynak web uygulama güvenliği projesi olan OWASP’ın paylaşmış olduğu mobil uygulamaların ilk 10 güvenlik riski aşağıdaki gibidir.
- Uygun Olmayan/Hatalı Platform Kullanımı
Mobil uygulama geliştiricilerinin en çok dikkat etmesi gereken hususlardan bir tanesi “AndroidManifest.xml” dosyasıdır. Bu dosyada uygulama için gerekli izinler istenmektedir. Uygulama geliştiricisinin gerekli izinleri kullanıcıdan alması için AndroidManifest.xml dosyasına eklemesi gerekmektedir. Android’in eski versiyonları incelendiği zaman “exported” özelliği true olarak dönmekteydi. Bu açık şu anlama gelmektedir; eğer dışa aktarma özelliğini geliştirici değiştirmez ise aktif durumda kalmaktadır. Buna kısa bir örnek vermek gerekirse, bir depolama uygulaması indirdiğinizi düşünün; Eğer geliştirici exported ifadesini false olarak değiştirmemişse sizin depolama alanınıza erişim sağlanabilmektedir. - Güvensiz Veri Depolama
Şifrelenmeden tutulan veriler telefon içerisinde tutuluyor ise bu verilere kolayca erişim sağlanabilmektedir. Bir saldırganın fiziksel olarak mobil cihazı elde etmesi durumunda, saldırgan mobil cihazı bilgisayarına bağlayıp çeşitli yazılımlarla kurbanın kişisel olarak tanımlanan verilerine veya diğer hassas bilgilerine erişebilir. Aynı zamanda bir saldırgan bu bilgileri elde edebilmek için bir zararlı yazılım geliştirebilir. - Güvenli Olmayan Haberleşme
Uygulama içerisinde kullanılan API’lar haberleşme esnasında bir şifreleme metodu kullanmıyorsa, trafiği izleyen bir saldırgan haberleşme verilerini elde edebilir. - Güvensiz kimlik doğrulama
Uygulamalar üzerinde bulunan kimlik doğrulama adımlarının doğru şekilde uygulanması gereklidir. Kimlik doğrulama genellikle kullanıcı adı ve parola ile sağlanır. Burada yapılacak olan otomatize bir saldırı ile bu verilere erişim sağlanabilir. Örneğin yapılacak olan bir bruteforce saldırısı ile 4 haneli bir şifre ele geçirilebilir. Bu durumun oluşmaması adına captcha kullanılması, 2 faktörlü kimlik doğrulaması yapılması, parola içerisinde özel karakter vb. gibi önlemler alınabilir. - Yetersiz Şifreleme
Uygulama üzerinde kullanılan veriler güçlü şifreleme yöntemleri ile şifrelenmiyor ise, saldırganlar kullanıcı verileri ya da uygulamanın kodlarını elde edebilir. Böyle bir saldırıdan etkilenmemek için uygulamanın güçlü şifreleme yöntemleri ile şifrelenmesi gerekir. - Güvensiz Yetkilendirme
Uygulamalardaki yetkilendirme adımları çok kritiktir. Yetkilendirme kullanılarak hangi kullanıcının hangi ekranlara erişebileceğinin ya da hangi ekranlarda düzenleme yapabileceğinin kısıtlaması yapılabilir. Örneklendirmek gerekirse, yetkilendirme eksikliği bir saldırgan uygulamaya gönderilen kendi profil ID’sini hedef aldığı kullanıcıya ait profil ID’si ile değiştirdiğinde hedef alınan kullanıcının profil sayfasını görmesine sebep olabilir. - İstemci Kod Kalitesi
Uygulama içerisinde kullanılan 3. parti kütüphanelerin kullanılmaya başlamadan önce analiz edilmesi gerekir. Yazdığınız kod üzerinde bir zafiyet bulunmasa bile kullandığınız 3. parti kütüphaneler zafiyet barındırıyor olabilir. - Kod Kurcalama
Uygulama üzerinde kod kurcalama için bir güvenlik önlemi alınmamışsa, saldırgan uygulama kodlarını doğrudan değiştirebilir, uygulamanın kullandığı bellek içeriğini dinamik olarak değiştirebilir, kullanılan API’ları değiştirebilir veya uygulama verilerini ve kaynaklarını değiştirebilir. Bu saldırıyı önlemek için mobil cihaz üzerinde root/jailbreak kontrolü yapılması ve uygulamanın, kod bütünlüğünün bozulduğu durumları algılayabilecek şekilde kodlanması gerekmektedir.
Daha fazlası için, OWASP Reverse Engineering and Code Modification Prevention Project. - Tersine Mühendislik
Bir saldırgan uygulamayı kendi hazırladığı ortamda çalıştırıp çeşitli araçlar yardımıyla analiz ederek uygulamanın kaynak kodlarına erişebilir ve kaynak kodlarında bulunan hassas verileri elde edebilir. Bu saldırılardan korunmak için obfuscation teknikleri kullanılabilir.
Daha fazlası için, OWASP Reverse Engineering and Code Modification Prevention Project. - Gereksiz İşlevsellik
Geliştiriciler kod geliştirme ortamlarında işlerini kolaylaştırmak adına debug modu gibi işlevleri açabiliyor. Bu işlevler canlı ortamlarda açık olduğunda saldırganlar bu işlevleri kötü amaçlarda kullanabilir. Uygulamaların canlı ortamlara çıkmadan önce bu işlevlerin kapatılması önemli bir adımdır.
Bu önlemler dışında alınabilecek diğer güvenlik önlemlerinden biri MTD (Mobile Threat Defense)’dir. MTD uygulamaları mobil cihazlara ya da mobil uygulamalara entegre olabilir. Bu sayede mobil cihazların güvenliği yükseltilebilir.
Diğer yazılarımızdan bazılarına göz atmak için: