Bloga geri dön
Mobil uygulamalar; bankacılık, sosyal medya, sağlık ve e-ticaret gibi birçok alanda hayatımızın önemli bir parçası haline gelmiştir. Mobil uygulamalar, kullanıcıların kişisel ve hassas verilerini barındırdığı için güvenlik açısından büyük riskler taşımaktadır.
Bu noktada, statik kod analizi gibi teknikler, güvenlik açıklarını erken tespit etmek adına kritik bir rol oynamaktadır.
Bu içerikte;
Statik kod analizi, mobil uygulamaların kaynak kodlarını veya derlenmiş APK’larını çalıştırmadan inceleyerek potansiyel güvenlik açıklarını belirleme yöntemidir. Bu yöntem, uygulamayı çalıştırma gereksinimi olmadan, kod içindeki tehlikeli kalıpları ve zafiyetleri daha hızlı tespit etme imkanı sunar. Böylece, geliştiriciler uygulamayı piyasaya sürmeden önce zafiyetleri çözerek daha güvenli bir sürüm elde edebilir.
Statik analizin ilk adımlarından biri, uygulamanın AndroidManifest.xml dosyasını incelemektir. Bu dosya, uygulamanın temel bileşenlerini, izinlerini ve dış dünya ile olan etkileşimini detaylı bir şekilde ortaya koyduğu için kritik bir öneme sahiptir. Manifest dosyası, uygulamanın güvenliği ve stabilitesi açısından analiz edilmesi gereken en temel unsurlardan biridir.
Mobil uygulamalarda karşılaşılan en yaygın güvenlik zafiyetleri, OWASP Mobile Top 10 listesinde özetlenmektedir. Aşağıdaki tablo, bu on başlık ve statik kod analiziyle tespit edilebilecek örnek güvenlik açıklarını içermektedir:
Yukarıdaki maddeler, Android uygulamaları özelinde sıklıkla karşılaşılan güvenlik risklerini özetler. Ancak bu zafiyetlerin büyük kısmını kavrayabilmek için öncelikle Android’in temel güvenlik yapısını ve Manifest dosyasının rolünü anlamak gerekir.
Android'in güvenlik mimarisinde önemli bir yer tutan sandboxing, her uygulamaya benzersiz bir kullanıcı kimliği (UID) atayarak yalnızca kendi verilerine erişmesini sağlar. Bu yöntem, zararlı yazılımların diğer uygulamaların verilerine erişmesini engeller ve bankacılık bilgileri, fotoğraflar veya mikrofon gibi hassas verilere izinsiz ulaşılmasını önler.
Android, Linux tabanlı bir sistem olduğu için her uygulamayı ayrı bir kullanıcı kimliğiyle çalıştırır. Bu sayede uygulamalar birbirlerinin verilerine erişemez. Ancak, cihazın root edilmesi veya yanlış izin yapılandırmalarının yapılması, bu güvenlik mekanizmasını zayıflatabilir ve uygulamaların birbirlerinin verilerine erişmesine yol açabilir.
Android uygulamalarında Manifest dosyası, uygulamanın bileşenlerini (Activity, Service, BroadcastReceiver, ContentProvider), ihtiyaç duyduğu izinleri ve temel ayarları tanımlayan kritik bir bileşendir. Statik analiz yaparken dikkat etmemiz gereken ilk yerlerden biri bu dosyadır.
Android uygulamaları, ihtiyaç duydukları izinleri AndroidManifest.xml dosyasında belirtir. Örneğin, bir uygulama fotoğraflara erişim izni veya mikrofon erişimi talep edebilir.
Eğer bir uygulama, gereksiz yere mikrofon veya kamera gibi izinler istiyorsa, bu durum güvenlik riskleri yaratabilir. Örneğin, pdf oluşturma uygulaması olarak tanıtılan bir uygulamanın, kullanıcıdan mikrofon izni istemesi kullanıcının gizliliğini tehdit edebilir.
Bazen uygulamalar arasında hassas verilerin, örneğin şifreler veya tek kullanımlık şifreler (OTP) gibi, paylaşılması gerekebilir. Bu tür verilerin güvenli bir şekilde transfer edilebilmesi için özelleştirilmiş izinler kullanılır.
Özelleştirilmiş izinler, AndroidManifest.xml dosyasına tanımlanarak yalnızca belirli uygulamaların bu verilere erişmesine olanak tanır. Burada dikkat edilmesi gereken en önemli unsur, izinlerin protection level ayarlarıdır. Eğer bir izin "tehlikeli" (dangerous) olarak tanımlanmışsa, kullanıcıya bu izni verme konusunda bir onay kutusu gösterilir. Diğer taraftan, signature koruma seviyesi kullanıldığında, yalnızca aynı imza anahtarına sahip uygulamalar bu verilere erişebilir. Bu mekanizmalar, hassas verilerin güvenliğini sağlamaya yardımcı olur.
Android uygulamalarında, güvenlik açıklarının büyük bir kısmı ağ trafiği, özellikle HTTPS veya diğer TCP bağlantılarıyla ilgili olsa da, uygulamanın temel bileşenlerinde de ciddi güvenlik riskleri bulunabilir. Bu temel bileşenlere ilk aşamada Activity inceleyerek başlayacağız.
Android uygulamaları başlatıldığında, örneğin telefonunuzda bir uygulama simgesine tıkladığınızda ekranda açılan sayfa, bir Activity’dir. Uygulamaya login olmak istediğinizde kullanıcı adı ve şifre girdiğiniz giriş ekranı (login screen), bir Login Activity olarak tanımlanır. Eğer doğru giriş yaptıysanız ve profil ekranına geçiş yaptıysanız, bu da farklı bir Activity’dir. Bu şekilde, her ekran bir Activity olarak kabul edilebilir.
Her Activity, genellikle bir XML dosyasında yapılandırılmış bir ekran düzenine (layout) sahip olup uygulama her açıldığında bu ekran yüklenir. Ancak, bazı Activity’ler güvenlik önlemleri ile korunur. Örneğin, Profile Activity ve Settings Activity, kullanıcı adı ve şifre gerektirir ve bu ekranlara yalnızca doğrulama sonrasında erişim sağlanabilir.
Bir Activity, başka bir Activity’yi başlatabilir. Örneğin, Files Activity başka bir ekran olan Profile Activity’ye yönlendirebilir. Ancak, bazı Activity’lere güvenlik nedeniyle yalnızca belirli kullanıcıların erişim sağlaması gerekmektedir.
Bazen uygulamalar, dışarıdan çağrılabilen Activity’lere ihtiyaç duyar. Örneğin, bir QR kod tarayıcı uygulaması, taranan veriyi açmak için farklı bir Activity’yi başlatmak isteyebilir. Bu gibi durumlarda, geliştiriciler exported="true" özelliğini kullanarak belirli bir Activity'yi dışa açabilir.
Ancak, tüm Activity’leri dışa açmak ciddi güvenlik riskleri oluşturabilir. Örneğin, Profile Activity gibi hassas bilgileri içeren bir ekranın dışa açılması, zararlı bir uygulamanın bu Activity’yi izinsiz başlatarak güvenli alanlara erişmesine olanak tanır.
Bu nedenle, geliştiriciler sadece gerekli Activity'leri dışa açmalıdır. Bu yaklaşım, uygulamaların hem işlevselliğini artırırken hem de kullanıcı verilerini koruma konusunda etkili bir adım atmalarını sağlar.
Android’de bir Activity’nin dışa açık (exported) olup olmadığını anlamanın en güvenilir yolu, AndroidManifest.xml dosyasını kontrol etmektir. Eğer bir Activity exported="true" olarak tanımlanmışsa, bu Activity diğer uygulamalar tarafından başlatılabilir.
Exported Ayarı:
Android ekosisteminde, Intent'ler uygulama bileşenleri arasında iletişim kurmanın temel bir aracıdır. Bir Intent, bir uygulamanın bir bileşeninin (Activity, Service, Broadcast Receiver gibi) başka bir bileşeni başlatmasını veya bileşenler arasında veri iletmesini sağlar. Bu, Android'in modüler ve esnek yapısını mümkün kılar. Örneğin, bir kullanıcı telefonunda bir resim çekmek istediğinde, kamera uygulaması bir Intent göndererek resim çekme işlevini başlatır.
Yanlış yapılandırılmış bir exported ayarı veya dikkatsizce tanımlanan intent filter'lar, zararlı uygulamaların yetkisiz erişim sağlamasına neden olabilir. Özellikle, dışa açık bırakılan hassas bir Activity, zararlı uygulamaların bu Activity’yi izinsiz olarak başlatarak hassas kullanıcı verilerine erişim sağlamalarına yol açabilir.
Intent’ler, iki ana türe ayrılır: Explicit (açık) Intent ve Implicit (örtük) Intent. Bu türlerin her biri, farklı kullanım senaryolarında önemli avantajlar sağlar.
Explicit Intent'ler, belirli bir bileşene yönelik işlemlerde kullanılarak hedef bileşeni belirgin bir şekilde tanımlar. Bu tür Intent'ler, hedef bileşenin sınıf adını veya niteliğini doğrudan belirtir. Örneğin, bir kullanıcı giriş yaptıktan sonra doğrudan profil sayfasına yönlendirilecekse, bu durum için Explicit Intent kullanılır.
Bu örnekte, ProfileActivity.class belirtilen hedef ile doğrudan çalışır, bu da Explicit Intent'in tipik bir örneğidir.
Explicit Intent'lerin avantajları:
Implicit Intent'ler ise belirli bir bileşeni doğrudan belirlemeden genel bir işlem veya eylemi tanımlar. Bu tür Intent'ler, Android sisteminin uygun bileşeni seçerek kullanıcıya sunması için tasarlanmıştır. Örneğin, bir e-posta göndermek isteyen bir uygulama, bu işlemi yapmak için uygun bir e-posta uygulamasını seçmek üzere Implicit Intent kullanabilir.
Implicit Intent'lerin avantajları:
Bu örnekte, ACTION_SEND eylemi genel bir intent olarak tanımlanır ve Android kullanıcıya uygun bir e-posta uygulaması seçme seçeneği sunar.
Intent'ler güçlü ve esnek araçlar olmakla birlikte, yanlış kullanıldığında güvenlik sorunlarına neden olabilir. Bu tür sorunları önlemek için dikkat edilmesi gerekenler:
Bu bağlamda, mobil uygulama geliştirme dünyasında sıkça kullanılan deep link ve app link kavramları da dikkat gerektirir. Kullanıcıların uygulama içindeki belirli sayfalara doğrudan erişmesini sağlayan bu özellikler, yanlış yapılandırıldığında ciddi güvenlik açıklarına neden olabilir.
Deep Link: Mobil uygulamalar içinde belirli bir sayfaya doğrudan erişim sağlayan bağlantılardır. Kullanıcı bir deep link'e tıkladığında, uygulamanın ilgili aktivitesi açılır.
Örnek Deep Link Yapılandırması:
Örneğin, shopping://www.myshoppingapp.com/product/123 linki, kullanıcıyı mobil uygulamanın ProductDetailActivity sayfasına yönlendirir.
Eğer bir deep link üzerinden kullanıcı bilgileri veya oturum açma token'ları gibi hassas veriler iletiliyorsa, bu veriler zararlı uygulamalar tarafından ele geçirilebilir. Örneğin, bir access token veya oturum bilgisi deep link ile taşınıyorsa ve bu link zararlı bir uygulama tarafından tetiklenirse, saldırgan bu hassas bilgilere erişebilir.
Örnek: Eğer bir link URL’sinde hassas bilgiler taşınıyorsa:
shopping://www.myshoppingapp.com/product/123?session_id=abcd1234
Bu URL, zararlı bir uygulama tarafından ele geçirilebilir ve hassas bilgiler (örneğin oturum bilgileri veya erişim token'ları) saldırganların eline geçebilir.
Ayrıca bir saldırgan, android:scheme="shopping" şemasını ve belirli host değerlerini taklit ederek zararlı bir uygulama oluşturabilir. Bu uygulama, kullanıcıdan gelen deep link taleplerini kendi sistemine yönlendirebilir ve bilgileri çalabilir.
Deep link kullanımında dikkat edilmesi gereken güvenlik önlemleri şunlardır:
Web link, bir tarayıcıda açılabilen ve çoğunlukla web sayfasına yönlendiren bağlantılardır. Bu linkler genellikle HTTP veya HTTPS protokolünü kullanır ve URL formatında tanımlanır. Örneğin:
https://www.myshoppingapp.com/product/123
Örnek Web Link Yapılandırması:
Kullanıcı https://www.myshoppingapp.com/product/123 linkine tıkladığında, belirtilen web sayfasına yönlendirilir.
Güvenlik Riskleri:
App Link, bir mobil uygulamanın belirli bir içeriğini açan bir URL’yi ifade eder. Web linkler gibi tarayıcıda açılmak yerine, bir App Link tıklandığında doğrudan mobil uygulama açılır ve kullanıcıyı ilgili sayfaya yönlendirir. Bu mekanizma genellikle Android App Links ve iOS Universal Links olarak bilinir.
App Link ile Deep Link Arasındaki Fark
App Link Nasıl Çalışır?
Aşağıdaki tablo, Deep Links, Web Links, ve App Links arasındaki farkları gösterir:
!!! Deep Links: URL’nin özel bir şema (holiday://) kullanması gerekir.
!!! Web Links: HTTPS protokolü kullanılır, ancak autoVerify yapılandırması yoktur.
!!! App Links: HTTPS protokolü kullanır ve autoVerify özelliği ile doğrulama yapılır.
Android uygulama geliştirme sürecinde, Content Provider (İçerik Sağlayıcı) bileşenleri, uygulamaların veri paylaşımı yapmasını sağlayan önemli bir yapıdır. Ancak, bu bileşenlerin yanlış yapılandırılması veya kötüye kullanılması, ciddi güvenlik risklerine yol açabilir. Bu yazıda, Content Provider'ların ne olduğunu, nasıl çalıştığını ve olası güvenlik risklerini ele alacağız.
Content Provider, Android uygulamalarının diğer uygulamalarla veri paylaşmasını sağlayan bir bileşendir. Verilerin düzenli bir şekilde saklanması ve alınması için standart bir yapı sunar. Bu veriler, bir yerel veri tabanında, dosyada veya uzak bir sunucuda saklanabilir. Content Provider'lar, uygulamalar arası veri paylaşımını güvenli ve kontrollü bir şekilde yönetmek için kullanılır.
Content Provider, veri üzerinde sorgulama, ekleme, güncelleme ve silme işlemlerine olanak tanır. Bu işlemleri gerçekleştirirken URI (Uniform Resource Identifier) tabanlı bir sistem kullanır. URI, hangi tür verinin nerede olduğunu belirler ve uygulamaların bu verilere erişmesini sağlar.
Örneğin: content://com.android.contacts/contacts/1
Bu URI, cihazda bulunan kişi veritabanındaki 1. kişiyi işaret eder.
Bir Content Provider genellikle android.content.ContentProvider sınıfından türetilir ve aşağıdaki yöntemler özelleştirilir:
Bir uygulama, başka bir uygulamanın Content Provider’ına erişmek istediğinde, ContentResolver nesnesini kullanır. ContentResolver, Content Provider ile uygulama arasında köprü görevi görür. İstekleri Content Provider’a ileterek veri alımı veya işlemini gerçekleştirir.Örneğin, bir uygulama telefon rehberindeki kişilere erişmek istediğinde, ContentResolver üzerinden bir sorgu yaparak bu verileri alabilir.
Content Provider'lar, uygulamalar arası veri paylaşımını kolaylaştırırken, yanlış yapılandırıldığında ciddi güvenlik risklerine neden olabilir. Dikkat edilmesi gereken bazı riskler:
Android uygulamalarında veri paylaşımı ve yönetimi için sıklıkla kullanılan Content Provider'lar, uygulamanın veritabanına erişim sağlamak için SQL benzeri sorgular kullanır. Ancak bu durum, özellikle kullanıcı girdilerinin doğru şekilde kontrol edilmemesi durumunda, ciddi güvenlik açıklarına yol açabilir.
SQL Injection, bir saldırganın uygulamanın veritabanına zararlı SQL komutları göndererek yetkisiz işlemler gerçekleştirmesine olanak tanıyan bir saldırı türüdür. Content Provider'lar, veri sorgulamak için SQL benzeri yöntemler kullandığından, bu tür saldırılara karşı savunmasız olabilir.
Content Provider'ın query metodu, kullanıcı girdilerini doğrudan SQL sorgularına yerleştirirse, saldırgan bu girdileri manipüle ederek zararlı komutlar ekleyebilir. Örneğin, bir kullanıcı adı alanına normal bir değer yerine zararlı bir SQL kodu girilirse, bu kod veritabanında çalıştırılabilir.
Örnek Senaryo:
Aşağıdaki örnekte, saldırganın "admin" kullanıcısının bilgilerine erişmek için kullandığı bir SQL enjeksiyonu gösterilmektedir:
Bu sorguda, -- karakteri SQL'de yorum satırı başlatır. Bu nedenle, sorgunun geri kalanı yok sayılır ve saldırgan "admin" kullanıcısının tüm bilgilerine erişebilir. Bu tür bir saldırı, kullanıcı şifreleri ve diğer hassas bilgilerin ifşasına neden olabilir.
Path Traversal, bir saldırganın dosya yolu manipülasyonu yaparak uygulamanın erişim izni olmayan dosyalarına ulaşmaya çalıştığı bir saldırı yöntemidir. Content Provider'lar yanlış yapılandırıldığında, bu tür saldırılara açık hale gelebilir.
Content Provider'lar, dosya erişimi sağlarken kullanıcı girdilerini doğru şekilde doğrulamazsa, saldırganlar ../ gibi özel karakterler kullanarak dosya yollarını manipüle edebilir. Bu, uygulamanın korunan dosyalarına erişim sağlanmasına neden olabilir.
Örnek Senaryo:
Aşağıdaki örnekte, bir saldırganın Content Provider'ı manipüle ederek korunan bir dosyaya erişmeye çalıştığı gösterilmektedir:
Bu sorguda, saldırgan ../ karakterlerini kullanarak dosya yolunu manipüle etmiş ve uygulamanın shared_prefs dizinindeki pin.xml dosyasına erişmeyi denemiştir. Bu tür dosyalar, uygulamanın hassas bilgilerini içerebilir.
Content Provider’ların ardından, manifest dosyasının analizi, uygulamanın genel yapısını ve olası güvenlik açıklarını daha iyi anlamamızı sağlar.
MobSF (Mobile Security Framework), Android uygulamalarının güvenlik açıklarını tespit etmek için kullanılan güçlü bir statik ve dinamik analiz aracıdır. Bu bölümde, MobSF’in sunduğu analiz özelliklerini ve tespit edilen güvenlik açıklarını detaylı bir şekilde inceleyeceğiz.
Android uygulamalarının manifest dosyası, uygulamanın nasıl çalıştığını ve hangi bileşenleri içerdiğini anlamamıza yardımcı olan en kritik dosyalardan biridir. Şimdi bu dosyayı detaylı bir şekilde inceleyelim.
MobSF, analize başlamadan önce uygulamanın temel bilgilerini sunar. Bu bilgiler, uygulamanın güvenlik durumunu anlamak için önemli bir başlangıç noktasıdır.
Paket Adı: com.android.insecurebankv2
Bu, uygulamanın benzersiz kimliğidir. Google Play Store’da ve cihazınızda bu isimle tanınır.
Uygulama Sürümü: 1.0
Kullanıcıya gösterilen sürüm numarası.
Minimum SDK Sürümü: 15 (Android 4.0.3)
Uygulamanın çalışması için gereken minimum Android sürümü. Bu, uygulamanın hangi cihazlarla uyumlu olduğunu gösterir.
Hedef SDK Sürümü: 22 (Android 5.1)
Uygulamanın hangi Android sürümü için optimize edildiğini belirtir. Bu sürüm, modern API’lerden ve güvenlik özelliklerinden yararlanmasını sağlar.
Ana Aktivite: LoginActivity
Uygulama başlatıldığında açılan ilk ekran. Genellikle kullanıcı girişi için kullanılır.
Bu bilgiler, uygulamanın genel yapısını anlamak ve güvenlik açıklarını tespit etmek için önemli bir temel oluşturur.
Android uygulamaları, çeşitli sistem kaynaklarına erişmek için izinler talep eder. Ancak, bu izinler kötüye kullanıldığında kullanıcı verileri ciddi risk altında olabilir. MobSF, uygulamanın talep ettiği izinleri analiz eder ve bu izinlerin kötüye kullanım risklerini değerlendirir.
SMS Gönderme İzni (SEND_SMS):
Bu izin, uygulamanın kullanıcıdan habersiz SMS göndermesine olanak tanır. Zararlı yazılımlar, bu izni kullanarak ücretli mesajlar gönderebilir veya kullanıcının kişisel bilgilerini sızdırabilir.
Harici Depolamaya Yazma İzni (WRITE_EXTERNAL_STORAGE):
Bu izin, uygulamanın harici depolama alanına (SD kart gibi) veri yazmasına izin verir. Zararlı yazılımlar, bu izni kullanarak cihaza zararlı dosyalar yükleyebilir veya kullanıcı verilerini dışarı sızdırabilir.
Kişiler Listesine Erişim İzni (READ_CONTACTS):
Bu izin, uygulamanın kullanıcının rehberindeki kişilere erişmesine olanak tanır. Zararlı yazılımlar bu izni kullanarak kişiler listesini ele geçirebilir ve bu bilgileri spam veya phishing saldırılarında kullanabilir.
Hassas Konum Bilgilerine Erişim İzni (ACCESS_FINE_LOCATION):
Bu izin, uygulamanın kullanıcının tam konum bilgilerine erişmesine olanak tanır. Zararlı yazılımlar bu izni kullanarak kullanıcının hareketlerini izleyebilir ve bu bilgileri kötü amaçlarla kullanabilir.
Telefon Durum Bilgilerine Erişim İzni (READ_PHONE_STATE):
Bu izin, uygulamanın cihazın durum bilgilerine (telefon numarası, arama durumu, IMEI numarası gibi) erişmesine olanak tanır. Zararlı yazılımlar, bu izni kullanarak cihazın benzersiz kimliğini ele geçirebilir ve bu bilgileri kötü amaçlarla kullanabilir.
Bu izinler, zararlı yazılımlar tarafından kullanıcı verilerini sızdırmak veya zararlı eylemler gerçekleştirmek için kullanılabilir. Bu nedenle, uygulama sadece ihtiyaç duyduğu izinleri talep etmeli ve gereksiz erişimlerden kaçınmalıdır.
Manifest dosyasındaki aktiviteler, uygulamanın hangi ekranlardan oluştuğunu ve bu ekranlara nasıl erişileceğini tanımlar.
Birçok aktivite, android:exported="true" olarak işaretlenmiş. Bu durum, dış uygulamaların bu aktiviteleri doğrudan çağırmasına olanak tanır. Bu da zararlı bir uygulamanın, aktiviteleri izinsiz bir şekilde tetikleyerek uygulamanın işleyişini manipüle etmesine neden olabilir.
Manifest dosyasına baktığımızda, uygulamanın hata ayıklama modunun açık olduğunu görüyoruz:
Hata ayıklama modunun açık olması, saldırganların uygulamanın kaynak kodunu ve iç yapısını analiz etmesine olanak tanır. Bu, uygulama zafiyetlerini keşfetmeyi kolaylaştırır.
Son olarak, uygulamada kullanılan Content Providers ve Broadcast Receivers bileşenlerini inceler:
Dışa açık olarak tanımlanan Content Provider ve Broadcast Receiver bileşenleri, zararlı uygulamalar tarafından manipüle edilebilir. Özellikle Content Provider’lar, doğru yapılandırılmadığında hassas verilerin açığa çıkmasına yol açabilir.
6. Signer Certificate (Sertifika İmzası)
Sertifikanın imzası, uygulamanın doğruluğunu ve güvenliğini doğrulamak için kullanılır.
7. Manifest Dosyası Analizi
AndroidManifest.xml dosyasındaki yapılandırmaların analizidir. Bu dosya, uygulamanın çalışma şekli hakkında bilgi verir. MobSF, APK'nın manifest dosyasını inceleyerek uygulamanın güvenlik zafiyetlerini tespit eder. MobSF taraması sonucu manifest dosyasından elde edilen bazı bulgular şunlardır:
Uygulama kodunda kullanıcı adı, şifre gibi hassas veriler sabitlenmiş olarak bulunabilir. Bu verilerin yetkisiz kişiler tarafından ele geçirilmesi, uygulamaya yetkisiz erişim sağlanmasına neden olabilir.
Android uygulamaları, aktiviteler aracılığıyla farklı ekranlar sunar. Yapılan analizde, uygulamanın aktiviteleri üzerinden bazı güvenlik açıkları oluşabilir:
MobSF, APK dosyasındaki string analizini yaparak, uygulama içerisinde yer alan karakter dizilerini tespit eder. Bu diziler, uygulamanın işlevselliği ve güvenliği hakkında önemli bilgiler sunar. Özellikle API anahtarları, kullanıcı şifreleri, veritabanı bağlantı bilgileri, URL’ler gibi hassas veriler, genellikle bu stringlerde yer alabilir. Bu tür veriler, şifrelenmeden ve güvensiz bir şekilde uygulama içinde saklandığında, yetkisiz kişiler tarafından ele geçirilebilir ve kötüye kullanılabilir.
APK dosyalarında string veriler genellikle res/values/strings.xml dosyasında, kullanıcıya gösterilen metinler için saklanırken, hassas veriler ve API anahtarları smali ve dex dosyalarında sabitlenmiş (hardcoded) şekilde bulunabilir.
MobSF’in Code Analysis sekmesi, mobil uygulamaların kaynak kodunu statik olarak analiz ederek güvenlik açıklarını tespit etmek için kullanılan bir araçtır. Bu sekme, hassas bilgilerin günlük dosyalarına kaydedilmesi, hassas verilerin geçici dosyalara yazılması, üretim yapılandırmasında debug modunun açık olması, SQL enjeksiyonuna yol açabilecek güvenilmeyen kullanıcı girdileri ve şifrelenmeden veritabanına yazılan hassas bilgiler gibi güvenlik açıklarını tespit eder. Ayrıca, harici depolama alanına yapılan yanlış erişimler ve diğer uygulamaların bu verilere erişebilmesi gibi dışa veri sızma risklerini de kontrol eder. MobSF, tespit edilen açıklarla ilgili detaylı raporlar sunarak geliştiricilerin güvenlik önlemleri almasını sağlar ve uygulamanın genel güvenliğini artırmalarına yardımcı olur.
MobSF’in Malware Lookup sekmesi, mobil uygulamanın zararlı yazılım içerip içermediğini tespit etmek için kullanılır, ancak Triage Report doğrudan zararlı yazılım tespiti yapmaz. Bunun yerine, genel bir güvenlik değerlendirmesi sağlar. Diğer raporlar (VirusTotal Report, MetaDefender Report, ve Hybrid Analysis Report) ise, uygulamanın zararlı yazılım içeriği açısından taranmasını sağlayan ve daha derinlemesine analizler sunan araçlardır.