MOBİL UYGULAMALAR İÇİN
SİBER GÜVENLİK KONTROL LİSTESİ

Mobil uygulama kullanıcıları için ortaya çıkartılan ürünlerin kullanışlı olduğu kadar güvenli de olması oldukça önemlidir.

Siber güvenlik ve siber savunma alanlarında, yönetici seviyesindeki kişilerin bilmesi ve dikkat etmesi gerekenleri ele alan çok sayıda makale bulunmasa da, veri ihlalleri ve güvenlik sorunları nedeniyle iflasa kadar giden süreçleri anlatan pek çok makaleye rastlamak mümkün. Bu nedenle de, siber güvenlik yalnız IT (Bilgi Teknolojileri) birimi ve personelini değil, yönetim kadrosunu da aynı oranda ilgilendirmesi gereken bir konu.

Bir projenin mimarisini, özelliklerini ya da sunulan çözümleri oluştururken her zaman bazı zafiyetler bulunabiliyor ve bunları göz önünde bulundurmak gerekiyor. Bu sayede tehlikeli bölgeler belirlenebiliyor ve geliştirme sürecinden önce bunlar azaltılabiliyor.

Ortaya çıkartılacak uygulamaların güvenliği yalnızca GDPR veya KVKK ve benzeri düzenlemelerin gerektirdiği şartlara uymanın kritikliğinden değil, kullanıcıların kişisel ve özel verilerinin güvenliğini sağlamanın sorumluluğundan da kaynaklanıyor.

Uygulamalar, kullanıcılarının telefon rehberi (veya kişi listeleri) gibi verileri kendi veri tabanlarına yüklemek için ya da finansal verilerine erişim için izin istiyor ve uygulamayı kullanmak isteyen kullanıcılar sürecin güvenli olduğuna ve verilerinin güvende tutulacağına inanarak bunlara izin veriyor. Ancak örneklerle görüyoruz ki “verileri güvende tutabilmek” maalesef her zaman mümkün olmuyor.

Uygulama üreticilerinin sürekli iki adım ileride düşünmesi ve kullanıcılarının verilerini sahtekarlık, dolandırıcılık ve siber saldırılardan koruması günümüz dünyasında bir seçenek değil zorunluluk haline geldi.

Tüm uygulamaların “hacklenebileceğini” kabul edelim. Yine de söz konusu güvenlik olduğunda bunun gerçekleşmemesini ummak bir strateji olarak kabul edilemez. Bu makalenin amacı, uygulama üreticilerinin yanı sıra ürün ve proje yöneticilerinin de ürünlerinin güvenliği hakkında bir kere daha düşünmelerini sağlamak.

Makalenin devamında yer alan “Mobil Uygulamalar için Siber Güvenlik Kontrol Listesi”ndeki soruları Evet/Hayır şeklinde yanıtlayarak güncel güvenlik durumunuz konusunda aşağı yukarı bir fikir edinebilirsiniz.

TTP Nedir?

Anlaşılması gereken ilk konu TTP yani Taktik, Teknik ve Prosedürler. TTP, gelişmiş sürekli tehditleri (APT) analiz etmeye yönelik bir yaklaşımdır.

Temel olarak, sistemi belirli siber tehditlerden korumaya ve tehditlerin sistemi nasıl etkileyebileceğini anlamaya yardımcı olan bir ana çerçevedir.

Daha basitçe açıklamak gerekirse:

Taktik: Saldırı sırasındaki davranışları tanımlar
– Teknik:
Saldırının teknolojik yaklaşımını betimler
– Prosedürler: Saldırıyı düzenleyen kişinin eylemlerinin sırasını kapsar

Eğer TTP’yi biliyorsanız saldırgan davranış kalıplarını bilirsiniz ve bu sayede sisteminizi korumak için gerekli tedbirleri alabilirsiniz.

Zaman zaman müşterilerimiz ile konuşurken sitemlerini korumak veya ürünlerinin güvenliğini sağlamak konusunda çok da endişeli olmadıklarını görebiliyorum. Bunun temel nedeni ise ürünlerinin veya kuruluşlarının siber saldırganların dikkatini çekecek muhtemel bir hedef olmadığını düşünmeleri.

Ancak, siber saldırganların amaçlarının ve motivasyonlarının her saldırı için farklı olabileceğini akılda tutmak lazım:

  • Hassas ve iş ile ilgili verilere erişmek istiyor olabilirler
  • Uygulamaya izinsiz erişim sağlamaya çalışıyor olabilirler
  • Sistemin performansını düşürmeye çalışıyor olabilirler
  • Siz hiç umurlarında olmayabilirsiniz ve tesadüfen size denk gelebilirler

Yani kuruluşun büyüklüğü siber saldırganlar için her durumda önemli değil, hatta daha önce çok defa belirttiğimiz gibi büyük siber güvenlik yatırımları bulunmayan, kolay hedefleri seçmeleri daha muhtemel.

Uygulamanın iyi bir kullanıcı deneyimi sunması için basitleştirilen her adım, güvenliğin seviyesinin de azalmasına neden olabileceğinden uygulamanın kolaylığı ile “hacklenmesinin” zorluğu arasında denge kurmak gerekiyor.

Mobil Uygulamalar için

Siber Güvenlik Kontrol Listesi

Uygulama güvenliği konusunda ele alınması gereken konuları ve noktaları daha iyi anlayabilmek için aşağıdaki gibi küçük bir kontrol listesi aracılığıyla incelemenin daha iyi olabileceğini düşünüyorum:

  • İstemci uygulaması (iOS / Android / web uygulamaları)- Son kullanıcı tarafından kullanılan uygulama.
  • Altyapı- Uygulamanın içeride nereden ve nasıl çalıştığı.
  • Geliştirme süreci – Ekibin ürünü nasıl geliştirdiği ve sürdürdüğü.

Bunlar akılda tutulması gereken temel öğeler.

Buradan sonraki kısımları Evet / Hayır şeklinde cevaplamanız gerekiyor.

Uygulama seviyesinden başlayalım:

  1. Aynı anda açık olan oturumların (session) sayısını kontrol ediyor musunuz?

    Kullanıcı bakış açısından baktığımızda, oturumları takip edebilme ve gerektiğinde bunlardan herhangi birinin bağlantısını kesebilme hakkına sahip olmaları gerekir. Bir dolandırıcı ya da siber saldırgan uygulamaya erişim sağlayabilir. Bu özellik sayesinde kullanıcılarınızın kendilerini bu gibi durumlardan korumalarını sağlayabilirsiniz. Öte yandan, daha direkt ve basit bir yaklaşım ile, uygulamaya bir seferde sadece bir oturum açılmasına da müsaade edebilirsiniz.

  2. Erişim belirtecinin (Access token) ömrü 1 saatten az mı?

    Tokenlar otomatik olarak yenilenebilir. Eğer süresiz bir token varsa sisteminizde büyük bir güvenlik açığı oluşacaktır. Bu token bir siber saldırgan tarafından fark edilebilecek ve kuruluş ya da ürününüze karşı düzenlenecek saldırılarda kullanılabilecektir.

  3. Cihazın rootlanmadığını ya da jailbreak yapılmadığını kontrol ediyor musunuz?

    Rootlanmış veya jailbreak yapılmış cihazlarda güvenlik konusunda sorunlar yaşanması muhtemeldir. Bu cihazlara girilen verilere ne olacağını bilemezsiniz. Finans uygulamalarının bu gibi cihazlarda kullanımına izin verilmemektedir, diğer bazı uygulamalar ise yalnız bazı fonksiyonların kullanılmasını engellemektedir.

  4. Sistemde görevleri birbirinden ayırdınız mı?

    Bu soru ile basitçe sorulmaya çalışılan bir erişim kontrol listesi (Access Control List) oluşturulup oluşturulmadığıdır. Her kullanıcının çalışabilmek için ihtiyacı olduğu kadar yetkiye sahip olması ve ihtiyacı olmayan verilere erişiminin engellenmiş olması gereklidir. Tüm kullanıcıların yönetici (admin) yetkilerine sahip olduğu sistemlere rastlıyoruz ki bu durumda bir siber saldırgan herhangi bir kullanıcı bilgisini çaldığında tüm sistemde dilediği her işlemi yapabilmektedir. Veri tabanını silmek, parolaları değiştirmek, tüm hassas verileri kendi bilgisayarına indirmek ve buna benzer tüm yetkilere sahip olmak için tek bir kullanıcının verilerine erişim sağlanmış olması yeterli olacaktır.

  5. SSL sertifikası kullanıyor musunuz?

    Bildiğiniz gibi SSL “Secure Sockets Layer” yani “güvenli katman” anlamına geliyor ve bu sertifika http’yi https’e çevirerek, iletilen verileri şifrelemek için yardımcı oluyor. Test ettiğimiz bir çok mobil uygulamada uygulama ile sunucu arasındaki bağlantının şifrelenmeden yapıldığını görüyoruz.

  6. Tokenların isteği yürüten kullanıcıya ait olup olmadığını kontrol ediyor musunuz?

    Çoğu uygulamada sistem tokenın aktif olup olmadığını kontrol eder ancak token sahibini kontrol etmez.

  7. Kullanıcı çıkış yaptıktan sonra istemciden verileri temizliyor musunuz?

    Uygulama cihaz üzerinde çalışırken bazı verilerin yerel depolama alanında depolanması gerekir. Kullanıcı çıkış yaptıktan sonra ise bu verilerin silinmesi gerekmektedir.
    Bu arada, hangi verilerin yerel olarak kaydedildiğini ve verilerin şifrelenip şifrelenmediğini de kontrol etmeniz gerekir.

  8. Kullanıcının başarılı/başarısız giriş denemelerini kontrol altında tutuyor musunuz?

    Bir kaba kuvvet (brute force) saldırısına engel olabilmek için giriş denemelerini kontrol altında tutmanız gereklidir.

Bir sonraki adımımız altyapı:

  1. Kullanıcı loglarını tutuyor musunuz?

    Sisteminizde neler olup bittiğini bilmeniz gerekiyor ancak loglarda kullanıcıların hassas verilerinin güvensiz bir şekilde tutulmaması da gerekli. Bunun için de tüm verilerin anonimleştirilmiş veya en azından hashlenmiş olması gerekiyor.

  2. Bir güvenlik izleme sisteminiz var mı?

    Sorunları kullanıcılardan önce tespit etmeniz kritik bir önem taşıyor. Eğer CPU’nuz %80’den fazla çalışıyorsa veya veritabanı yanıt vermiyorsa bunlarla ilgili teknik ekibinizin bir yerden uyarı alıyor olması gerekir. DDoS saldırıları gibi bazı durumlara zamanında müdahale edebilmenin yolu da kısmen bu uyarıları alabilmekten geçiyor.

  3. Kullanıcı bilgileri, tokenlar gibi gizli tutulması gereken verileri doğru şekilde yönetebileceğiniz bir sisteminiz var mı?

    Gizli tutulması gereken verileri saklamanıza, erişim politikalarını yönetmenize, erişimi iptal etmenize ve benzeri güvenlik yönetimi işlemlerine olanak sağlayan açık kaynak veya kurumsal ürünler mevcut.

  4. Firewall ayarlarınız doğru yapılandırılmış mı?

    Firewall sistem veya ağınızın ayrılmaz bir parçası olmak zorunda. İzinsiz erişimi engellemek için mutlaka bir firewall ihtiyacınız var ancak şunu iyi kavramak gerekiyor firewall sizi bütün kötülüklerden koruyabilecek sihirli bir kalkan değil özellikle de doğru yapılandırılmamışsa. Firewall kullanımı ile ilgili sıklıkla dışarıdan gelen bağlantıları gerektiği gibi kısıtlayamama veya fazladan yetki verme gibi durumlar ile karşılaşıyoruz.

  5. Veri yedekleme sisteminiz var mı?

    Tam olarak ne zaman başımıza ne gelebileceğini bilemediğimiz için her an sistemin bir siber saldırgan tarafından ele geçirilmesi veya veri tabanının etkileneceği bir olay yaşanması gibi durumlara hazırlıklı olmak hatta hosting ile yaşanabilecek bir sorunda derhal taşınabilmeye de hazırlıklı olmak gerekiyor.

  6. Hassas verilerin kaynak koda eklenmesini engelliyor musunuz?

    Güvenli olmaması, yönetiminin zor olması ve her zaman sorun çıkartmaya müsait olması nedeniyle yapılmaması gereken işlerden bir tanesi. Sabit kodlanmış kimlik bilgilerinin sisteme alınması, bir siber saldırganın sisteminize erişim sağlamasına ve hassas verileri ele geçirmesine neden olabilecektir.

  7. Tokenlarınız tüm bloklanmış kullanıcılar için iptal ediliyor mu ve bu kullanıcılar için tekrar kullanımı engelleniyor mu?

    Uygulama, giriş esnasındaki durumu (status) kontrol ettiği için bloklanan kullanıcı mobil uygulamaya giriş yapamaz. Ancak, token yaratılmıştır ve siber saldırgan API bağlantısını kullanmayı başarabilmiştir. Bir diğer husus ise API bağlantısı kullanıcının durumunu kontrol etmemiştir.

  1. Uçtan uca şifreleme var mı?

    Uçtan uca şifreleme kullanmak sizi MiT (man in the middle) saldırılarından koruyabilir. Verileriniz şifrelenir ve yalnız bazı kullanıcıların sizin şifrelenmemiş verilerinize erişimi bulunur.

  1. SHA1 kullanmıyorsunuz değil mi?

    SHA1 “Secure Hast Algorithm 1” yani “Güvenli Hash Algoritması 1” anlamına geliyor.

    NSA (USA National Security Agency) tarafından tasarlanan ve 1995 yılında piyasaya sürülen bir kriptografik hash fonksiyonu. Birkaç yıl önce istismar edildiği için yazılımlarınızda SHA-256 veya SHA-3 kullanıyor olmanız gerekiyor.

Son adım: Geliştirme ve Bakım Süreci

  1. Bir parola değiştirme süreciniz var mı?

    Birçok kuruluşta tek bir parolanın yıllarca kullanılabildiğini biliyoruz. Açık söylemek gerekirse yaşanan veri ihlallerinin sıklığı ve büyüklüğü düşünüldüğünde bu durum biraz korkutucu. Düzenli olarak uygulanan kurallara (örneğin her iki ayda bir zorunlu parola değişikliği) mutlaka ihtiyaç var. Ayrıca ekstra önem taşıyan durumlarda da (örneğin cihazın kaybedilmesi, uygulama geliştiricinin işten çıkartılması veya tanımlanmış bir güvenlik köprüsü (security bridge) gibi örneklerde parola değiştirme mecburi tutulmalı.

  2. Güvenlik riskleri veya TTP matrisiniz var mı?

    Bu dokümanlar ürün geliştirme sürecinin başından itibaren uygulanmalı ve düzenli olarak güncellenmelidir.

  3. Tüm güvenlik ve güvenlik mimarisi yaklaşımı dokümantasyonuna sahip misiniz?

    Bunun için her zaman vakit ayırmanın mümkün olmadığı kesin ancak güvenlik ekibinizin uygulamanın nasıl çalıştığı konusunda fikir sahibi olması gereklidir.

  4. Uygulama geliştiricilerinizin ekip için bir kod stili rehberi var mı?

    Ekibiniz birden fazla uygulama geliştiriciden oluşuyor ise, kod kalite seviyesini kontrol edebilmeniz için kurallara ihtiyacınız vardır.
  1. Ekibiniz için bir mobil cihaz kontrol politikanız var mı?

    Mobil cihazlar çoğunlukla veri ihlallerinin ana kaynağı olarak görülüyor. Aktif bir savaş bölgesinde Strava uygulamasını kullanan asker (GPS verilerini kullanarak, öncelikle bisiklet ve koşu egzersizlerini izlemek için kullanılan bir sosyal ağ) bu duruma verilebilecek en uç örneklerden bir tanesi ancak mobil cihaz kontrol politikası bulunmadığı durumda neler olabileceğini iyi anlatıyor. Bu askerin günlük hareketlerini sosyal ağdan paylaşması ABD’nin gizli operasyonunu “gizli” olmaktan çıkarttı. Eğer bu durum askeriye içerisinde bile yaşanabiliyorsa, her yerde yaşanabilir diyebiliriz.
    Kuruluş çalışanlarınızın ticari verilerinizi mobil cihazlarında kullanmalarına engel olmanız gerekir. Ayrıca bazı uygulamaların indirilmesinin, jailbreak’li veya rootlanmış cihazların kullanımına da engel olmak gereklidir.
    Son olarak, yazılımları ve cihazları güncel tutmak kati bir kural olarak kabul edilmelidir.

  2. Olay bildirim ve müdahale süreciniz var mı?

    Ofiste bulunmadığınız saatlerde sisteminiz devre dışı kaldığı takdirde bu konuda sorumlu olabilecek kişileri belirlemiş olmanız ve bu kişilere uyarı verecek bir sisteminiz bulunması gerekir. Bu kişilerin uyarı mesajını alacağı ve harekete geçeceğinden de emin olmalısınız.
  1. Uygulamanız için dışarıdan bir sızma testi hizmeti alıyor musunuz?

    Uygulama geliştiricilerin “siber güvenlik uzmanı” olmadıklarını belirtmekte fayda görüyorum. Genellikle konunun temeline hâkim olmakla birlikte güvenlik riskleri ile mücadele etmek güvenlik uzmanlarının tam zamanlı işidir. Kod yazan kişilerin üretmiş oldukları kodlardaki güvenlik açıklarını fark edememeleri de normaldir, bu kişilerin kendi kodlarına bakarken “körlük” yaşamaları da beklenir. Nasıl çalışması veya çalışmaması gerektiğini kesinlikle bilirler ancak bazen dışarıdan bir gözün bakması gerekir.

Sonuçlar:

Yukarıdaki sorulardan kaç tanesine EVET cevabı verdiniz?

Eğer cevaplarınızın 20’den fazlası EVET ise doğru yoldasınız. Tamamen doğru hale getirmek için yalnız birkaç adım daha atmanız gerekiyor.

Eğer EVET cevaplarınız 20’den az ise bir siber saldırı riski altındasınız.

Yukarıdaki kontrol listesinin esas amacı geliştirdiğiniz veya geliştirmekte olduğunuz ürünün güvenliği konusunda düşünmenizi sağlamak.

Özellikle ürün geliştirmenin ilk aşamalarında girişimciler “güvenlik” konularını da katarak bir de bu konu ile uğraşmak istemiyor, POC (proof of concept) kabul aldıktan sonra ise operasyonun teknik/güvenlik kısmına özel olarak eğilmeyi unutabiliyorlar. Ancak şunu belirtmek durumundayım, eninde sonunda veri ihlali veya basitçe “hacklenmek” gibi bir durumla karşılaştıklarında mecburen ilgileniyorlar.

Son olarak şunu belirtmek isterim ki siber güvenlik konusunda atacağınız ilk adımı ekibinizin eğitimine olmalı. Uluslararası standartlara uyulabilmesi için çalışanlara düzenli olarak siber güvenlik farkındalık eğitimleri verilmesi gerekiyor. Ekibiniz TTP ve siber saldırganlar konusunda ne kadar bilgi sahibi olursa okadar daha güvende olabiliyorsunuz.

Neden parolaların değişmesi gerektiği, oltalama saldırılarının nasıl olduğu ve güncel oltalama saldırılarının nasıl yapıldığı, neden USB’lerden uzak durulması gerektiği gibi basit görünebilecek konularda dahi hatırlatma veya açıklama yapılması kesin bir önem taşıyacak ve fark yaratacaktır.

Burada özellikle IT personeli dışında kalan kişiler, yani uzmanlar, yöneticiler, avukatlar, satış ekibi, muhasebe/finans departmanı vb. kişilerin eğitim almasına önem verilmesi gerekiyor. Bu kişiler genellikle saldırganlar için en korumasız pozisyonlarda görülüyor ve hedefleniyor.

Başa dön