Blog

OWASP Mobil Top 10 Listesi

Siber güvenlik konusunun ne kadar önemli olduğu artık herkesin bildiği bir gerçektir. Peki siber güvenlik konusunda bir dünya standartı var mıdır? Bu konuya yönelik bir kuruluş ya da oluşum mevcut mudur? Bugün bahsedeceğimiz konu “OWASP” olacak.

OWASP; “Open Web Application Security Project” anlamına gelen Owasp kendisini kar amacı gütmeyen ve yazılım güvenliklerini geliştirmek amaçlı çalışan bir kurum olarak tanımlamaktadır. Bu doğrultuda Owasp’ın bir TOP 10 listesi bulunmaktadır. Bu liste mobil uygulama geliştiricilerinin farkında olmadan yaptığı ya da bıraktığı 10 güvenlik açığını kapsamaktadır. Bu bir anlamda riskli davranışlar listesidir. Owasp top 10 listelediğimizde;

  • Improper Platform Usage: Hatalı platform kullanımı anlamına gelmektedir. 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. Güvenlik açığı tam olarak burasıdır. 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.
  • Insecure Data Storage: Güvensiz veri depolama anlamı taşımaktadır. Bu noktada şifrelenmeden tutulan veriler telefon içerisinde tutuluyor ise dinamik analiz tekniği ile bu verilere kolayca erişim sağlanabilmektedir.
  • Insecure Communication: Güvenli olmayan haberleşme anlamına gelmektedir. Bu noktada API olarak adlandırılan bir terim kullanılmaktadır. Kısaca örneklendirmek gerekirse; siz bir uygulama indirdiğiniz. İlk etapta kayıt için ad, soyad, telefon, adres ve benzeri bilgilerinizi doldurdunuz. Bu bilgiler API’ye gönderilemektedir. Dolayısıyla arada bir şifreleme metodu uygulanmamışsa eğer trafik izlenerek tüm verilere erişim sağlanabilir.
  • Insecure Authentication: Güvensiz kimlik doğrulama anlamına gelmektedir. Genellikle kullanıcı adı ve parola ile sağlanır. Burada yapılacak olan basit siber ataklar ile bu verilere erişim sağlanabilir. Örneğin yapılacak olan bir brute-force saldırısı ile 4 haneli bir şifre ele geçirilebilir. Burada iki adımlı doğrulamada kullanılabilir. İki adımlı doğrulamada ise giriş esnasında kullanılan giriş bilgileri ile veri tabanında bulunan bilgilerin eşleşmesine bakılır. Bu sayede iki adımlı doğrulanma sağlanmış olur. Fakat yapılacak brute-force denemeleri ile iki adımlı doğrulama da atlatılabilecektir.

  • Insufficient Cryptography: Yetersiz kriptografi ( şifreleme ) anlamına gelmektedir. Veri=mühimmat olarak nitelendirirsek, bu mühimmatın şifrelenmesi gerekmektedir. Çünkü veri demek günümüzde artık her şey demektir. Şifreleme çok eskiden beri var olan bir kavramdır. Fakat bizim burada bahsettiğimiz dijital şifrelemedir. Mobil uygulama içerisinde eğer veriler kendi algoritmalarına göre şifreleniyorsa, uygulamayı decompile edip, kodlara erişip, şifreleme algoritmasını anlayarak çözümleme sağlanabilir. Tabi bu kesin çözüm değildir. Önemli olan gerekli şifreleme algoritmalarının güçlü olmasıdır.
  • Insecure Authorization: Güvensiz yetkilendirme anlamına gelmektedir. Aslında en önemli zafiyetlerin başında gelmektedir. Şöyle örneklendirebiliriz; bir uygulamada benim ID’im 1071 olsun. Ben 1071 yazdığımda API’ye giden istek benim profil sayfamı bana döndürecektir. Fakat yetkilendirme konusunda sıkıntı varsa kendi ID’im yerine başka bir ID yazdığımda o kişinin sayfası dönecek dolayısıyla verilerine ulaşmış olacağım. Buradaki açık yetkilendirme hatasından kaynaklanmaktadır.
  • Client Code Quality: İstemci kod kalitesi anlamına gelmektedir. Bu zafiyet doğrudan kod kalitesinden kaynaklanmaktadır. Burada sistem içerisinde kullanılan 3. parti kütüphaneler çok önemlidir. Kullanılmaya başlanmadan önce analiz edilmelidir. Buradaki önemli husus sizin yazdığınızda kodda bir açık, zafiyet bulunmasa bile kullanmış olduğunuz 3.parti kaynaklı yazılımların açıklarından sömürülme ihtimaliniz yüksektir.
  • Code Tampering: Kod kurcalama anlamına gelmektedir. Bu konuya da bir örnek vererek açıklık getirelim. Siz bir uygulama yazdınız ve Google play store ile Appstore’a koydunuz. Bir şahıs bu uygulamanın kaynak koduna erişebilirse istediği zararlı yazılımı entegre edebilir. Ve bunu .apk formatında başka sitelerde paylaşabilir. Tabi birinin kodu kurcaladığını anlamak o kadar kolay ve basit bir işlem de değildir. Bu nedenle bilinmeyen sitelerden uygulama ve benzeri yüklemeler yapmamanız önerilir.
  • Reverse Engineering: Tersine mühendislik anlamına gelmektedir. Çok geniş kapsamlı bir konudur aslında tersine mühendislik teknoloji alanından günlük yaşantımıza kadar kullanabiliriz. Başka bir yazımızda daha detaylı bahsedeceğiz ama basit bir örnek vermek gerekirse; uygulamalar compile edilerek makine diline çevrilebilir. Tersine mühendislikte bu decompile edilir. Yani compile edilmiş bir uygulamanın kodlarına ulaşılmaya çalışılır.

  • Extraneous Functionality: Gereksiz işlevsellik anlamına gelmektedir. Geliştiriciler bazen debug modda bazı fonksiyonlar yazıyorlar. Burada amaç deneme yapmaktır. Fakat yayınlama aşamasında bu fonksiyonların silinmesi unutuluyor ve o şekilde yayınlanıyor. Bu da siber güvenlik dilinde “backdoor” kavramı ile yani “arka kapı” olarak adlandırılmaktadır.

Yukarıda sayılan 10 madde yazılım, uygulama geliştiricilerinin yaptığı hatalı, riskli davranışlardır. Bir proje ya da üründe önemli olan sağlam bir mimari oluşturmak, dünya standartlarında işlem yapmaktır. Yoksa yapım aşamasında dikkat edilmeyen bu tarz güvenlik açıkları ileri aşamalarda çok ciddi sorunlara yol açabilmektedir. Bu nedenle uygulamalarınızı, yazılımlarınızı her aşamada gerekli testlerden geçirmeyi, analiz yapmayı unutmamalısınız.

Bu konuda yardım almak, siber güvenlik alanındaki ürün ve hizmetlerimizden yararlanmak için bizimle iletişime geçebilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.