Mobil Uygulama Güvenliği Mimarisi Part-1

SWB
4 min readDec 19, 2020

--

2020 yılında pandeminin etkisiyle birlikte mobil cihazların (tablet, telefon v.b.) kullanım oranı hiç olmadığı kadar arttı. Mobil cihazların kullanımının bu kadar artması ile birlikte onlara yönelik tehditler de inanılmaz bir artışa geçti. Bu nedenle 2020 yılını kapatmadan mobil uygulama geliştirenler için bir güvenlik mimarisi yazı dizisi yayınlama ihtiyacı hissettim. Bu yazı dizisini oluştururken tahmin edebileceğiniz üzere OWASP’tan faydalandım. Bu yazı dizisi içerisindeki bir başlığa ait daha detaylı bilgi isterseniz kaynak kısmına ve yazıların sonuna bakabilirsiniz.

Mobil uygulamalar ile web uygulamaları ve masaüstü uygulamaları çok benzer gözükebilirler. Aslında birçok mobil uygulama arka planda web uygulamaları gibi çalışan endpointlerle haberleşiyor. Buna rağmen iş mobil uygulama güvenlik mimarisine gelince bu benzerlik ortadan kalkıyor. Mobil uygulamaların web ve masaüstü uygulamalarına göre daha spesifik ve daha farklı güvenlik ihtiyaçları mevcut. Örneğin bir web uygulamasında XSS zafiyeti, desktop uygulamasında buffer overflow önemli zafiyetler olabilirken mobil uygulama tarafında bu zafiyetlerden çok daha önemli güvenlik durumları ortaya çıkabilir. Bu yazıda ve OWASP’ın Guide’ında yer alan her şey yapıldığında %100 güvende olacak mıyız? Elbette hayır. %100 güvenli bir ortam varsa lütfen bana da haber verin. :-)

Bu yazı dizisinin birinci bölümünde temel konseptin ne olduğundan ve mobil uygulama güvenliği katmanlarından bahsedeceğiz. İkinci bölümde V1-V4 Standart aralığını, üçüncü bölümde ise V5-V8 Standart aralığını inceleyeceğiz.

OWASP her zaman olduğu gibi “Mobile AppSec Verification Standard” adı altında mükemmel bir model oluşturmuş ve yayınlamış. Bu modele göre güvenlik mimarisi üç ayrı katmana ayrılmış. Bu katmanları inceleyerek yazımıza başlayalım.

Kaynak: https://mobile-security.gitbook.io/masvs/0x03-using_the_masvs

Katmanların her biri aynı kısaltma ile geliyor: MASVS (Mobile AppSec Verification Standart)

MASVS-L1

Bu katman tüm mobil uygulamalar için uygundur.

İlk katmanımız olan bu katmanda “Standart Security” önerileri mevcut. Yani generic olarak tüm mobil uygulamalarda kullanabileceğiniz güvenlik standartlarını bu kategori altında göreceğiz.

Bu kategoride yer alan standartların tamamı eksiksiz ve doğru şekilde mobil uygulama geliştirme sürecine implemente edildiğinde Common Vulnerabilities dediğimiz sık karşılaşılan zafiyetlerden (bir istisna olmadığı sürece) etkilenmeyeceğiniz anlamına geliyor.

MASVS-L2

Bu katman highly sensitive data denilen yüksek dereceli hassas veri içeren uygulamalar için uygundur.

İkinci katmanımız olan bu katmanda Defense-in-Depth denilen bir derinlemesine savunma sunulmaktadır. Bu katmanın uygulanabilmesi için öncelikle bir threat model (tehdit modeli) oluşturulmalı ve güvenlik standartları, uygulamanın architecture (mimari) ve design (tasarım) aşamasında implemente edilmiş olmalıdır. Oluşturulan threat model’ine göre en uygun standartlar seçilmeli ve eksiksiz şekilde uygulanmalıdır.

Bu kategoride yer alan standartlar genellikle oldukça hassas veriler barındıran finans ve fintech uygulamalarında sıkla kullanılmaktadır.

MASVS-R

Bu katman kullanıcıların kötü niyetli olduğu varsayılarak tersine mühendislik gibi tekniklere karşı korunmak istenen ve çok güvenli olması ihtiyacı olan uygulamalar için uygundur.

“Resiliency Against Reverse Engineering and Tampering”, yani tersine mühendislik ve kurcalama, onaysız değişiklik yapma gibi saldırılara karşı dayanıklılık. Eğer ihtiyacınız olan tam olarak buysa, doğru katmana hoş geldiniz.

Üç katmanın da gerekli tüm standartları uygulanmış uygulamalar günümüzün son teknolojisine uygun tüm güvenlik önlemlerine (neredeyse) sahiptir. Bu katmandaki standartlar sayesinde spesifik ve sofistike olan birçok saldırı tekniğinden korunabilirsiniz. Peki nedir bu “spesifik ve sofistike” saldırılar:

  • Tampering
  • Modding
  • Reverse Engineering

Yukarıda örneklerini verdiğimiz tehditler uygulamalardan hassas kodları veya veya verileri çıkartmak/değiştirmek için kullanılır. Tahmin edebileceğiniz gibi bu katmanın uygulanması yüksek teknik bilgi, zaman ve ciddi yatırımlar gerektirebilir. O nedenle her mobil uygulama için gerekli olmayabilir.

Şahsi fikrimi sorarsanız bu üç katmanın da mutlaka mobil uygulama geliştirme süreçlerine eklenmesi taraftarıyım. Ancak gerçek yaşamda bütçeler, rekabet ve zaman ve hatta bu konuları bilen personel bulmak gibi olgular bunların uygulanabilirliğini azaltıyor.

Katmanların ne olduğunu konuştuktan sonra bir de OWASP’ın kullanım tavsiyelerine bir bakalım:

  • MASVS-L1
  • MASVS-L1+R
  • MASVS-L2
  • MASVS-L2+R

Yani dilerseniz yukardaki gibi standartları uygulayıp bir de bunlar için uygulamanızı verification’dan geçirebilirsiniz.

Şimdi de bu dört ayrı kullanım tavsiyesinin hangi mobil uygulamalara daha uygun olduğunu inceleyelim.

MASVS-L1

  • Tüm mobil uygulamalar için uygundur.
  • Maliyet/Performans açısından en uygun güvenlik standartlarını içerir.
  • Yüksek seviyede hassas veri içermeyen tüm uygulamalar için idealdir.

MASVS-L1+R

  • Intellectual Property (IP), yani fikri mülkiyet haklarının önemli olduğu mobil uygulamalar için uygundur.
  • Genellikle oyun endüstrisi için bu kategori daha uygundur. Online oyunlarda hile yapılmasının veya ücretli olarak sunulan oyun veya özelliklerin ücretsiz hale getirilmesini engellemek için kullanılır. Sadece oyun endüstrisi ile kısıtlı kalmayalım, buna benzer birçok sektörde de kullanılabilir.

MASVS-L2

  • Yüksek seviyede hassas veri içeren tüm uygulamalar için idealdir.
  • Özellikle sağlık ve finans sektöründeki mobil uygulamalar için kullanılır.
  • Kişisel ve hassas verilerin korunması ile birlikte fraud’un (sahteciliğin) önlenmesi amacı olan uygulamalar için daha uygundur.

MASVS-L2+R

  • Hem çok hassas veriler taşıyan hem de yazılımın içeriğine erişildiğinde ortaya çıkacak bilgilerin yüksek ticari sır içermesi durumlarında ve içeriğinde değişiklik yapıldığında ciddi zararlar açığa çıkacak uygulamalar için idealdir.
  • Maliyeti yüksek ancak güvenlik önlemleri de en yüksek olan seviyedir.

OWASP yukarıdaki katmanlara uygun olacak şekilde tüm güvenlik önlemlerini 8 kategoriye ayırmış:

  • V1: Architecture, Design and Threat Modeling Requirement
  • V2: Data Storage and Privacy Requirements
  • V3: Cryptography Requirements
  • V4: Authentication and Session Management Requirements
  • V5: Network Communication Requirements
  • V6: Platform Interaction Requirements
  • V7: Code Quality and Build Setting Requirements
  • V8: Resilience Requirements

Yazımızın ikinci bölümünde V1: Architecture, Design and Threat Modeling Requirement, V2: Data Storage and Privacy Requirements, V3: Cryptography Requirements, V4: Authentication and Session Management Requirements konularını detaylı olarak inceleyeceğiz.

Ek Notlar:

Mobil uygulamamız için hangi kategorinin en uygun olduğuna karar verdik ve ilgili standartların hepsini yerine getirdik. Şimdi bir değerlendirmeden geçip nasıl sertifika alabiliriz diyorsanız:

OWASP Mobile Security Project’in detaylarını görmek istiyorsanız:

OWASP Mobile Security Testing Guide ile mobil uygulamalara güvenlik/sızma testi yapmak istiyorum diyorsanız:

Kaynak:

https://mobile-security.gitbook.io/masvs/

--

--

SWB

Some Kind of Security Guy | Defender of Digital Privacy & Security 🫡 | #Cybersecurity | #Blockchain Security | Safeguarding the Decentralized Web 🌐