Android Yetki Sistemini Aşmak

Android cihazlardaki yetki sistemi, kullanacağı işlevler için gereken yetkileri belirterek izin almayan
uygulamaların cihaza zararlı birşeyler yapmasını engellemek için tasarlandı. Peki buna gerçekten
güvenebilir miyiz?

Android Yetki Sistemi Nasıl Çalışıyor?

Detaylara girmeden önce, Android’in yetki sisteminin nasıl çalıştığını gözden geçirelim.

Bir Android uygulaması ancak sınırlı miktarda sistem kaynağına erişebilir. Tehlikeli API’lere erişmek
için uygulama gerek duyduğu yetkileri AndroidManiflest.XML dosyasında belirtmek zorundadır. Bu
tehlikeli API’ler arasında kamera işlevleri , konum bilgisi (GPS), Bluetooth ve telefon işlevleri, SMS/
MMS işlevleri ve ağ bağlantıları sayılabilir.

Bir uygulama kurulunca, App Installer uygulamanın belirttiği yetkileri kullanıcıya listeleyerek
kullanıcının onayını ya da reddini bekler.

Kullanıcı yetkileri onaylamayı seçerse, kurulu olduğu sürece uygulama bu izinlere sahiptir. Kullanım
sırasında sistem kullanıcıya bu hassas API’lerin kullanılacağı konusunda tekrar bilgilendirme yapmaz.
Yetkilerin kullanımına onay verilmemesi halindeyse uygulamanın kurulumu durdurulur.

Gerekli izni almadan korumalı bir özelliği kullanmaya kalkışan uygulamalar, Android’in çalışma sistemi
tarafından güvenlik sınırlarını aştıkları gerekçesiyle durdurulur ve sonlandırılırlar.

Bu bilgilerin ışığında, yetki sistemini aşma olanağının çok düşük olduğu düşünülebilir. Ne yazık ki
kimi kurnaz geliştiriciler, az sonra anlatacağımız açıkları kullanarak yetki sistemini aşan uygulamalar
geliştirebilmekte.

Varsayılan Tarayıcıyı Kullanarak Bilgi Çalma

Android işletim sisteminde bir uygulama, başka bir uygulamanın bir bölümünü, yapılacak işi
tanımlayan gevşek bir veri yapısı olan “intent” sistemini kullanarak çalıştırabilir. Her intent yapılacak
iş ve bu işi gerçekleştirmek için gerekli veriden oluşur. Bir uygulama intent yayınladığında, mobil
işletim sistemi bu iş için en uygun diğer bir uygulamayı seçer.

Örneğin, Intent.ACTION_VIEW işlemini içeren bir intent yanında veri olarak da Uri.parse(“http://
www.google.com”) bilgisini taşıyorsa, uygulamanın Google web sitesine erişmek istediği anlaşılır.
Bu intent yayınlandığında, mobil işletim sistemi bu işe en uygun yanıtın web tarayıcıyı çalıştırmak
olduğuna karar verir.

İşte bu bilgiye sahip olan karanlık bir geliştirici, çaldığı bilgileri kendi sunucusuna yükletecek bir
yazılıma tarayıcıyı açtırabilir. Örneğin, kötü amaçlı yazılım http://example.com sunucusuna cihazın
Device ID değerini yüklemek istiyorsa, programcı gerekli intent’i şöyle oluşturabilir:

Web adresini açan tarayıcı olduğu için, kötü amaçlı yazılımın kurulum sırasında
android.permission.INTERNET yetkisini istediğini belirtmesi gerekmez. Web tarayıcı zaten bu yetkiye
sahip durumdadır.

Logcat: Sandığınızdan Daha Yetenekli

Yetki sistemini kötüye kullanmanın bir diğer yolu, Logcat ‘a dayanıyor. Logcat, Android işletim
sisteminin sağladığı bir kayıt sistemi ve hem sistem, hem de uygulamaların oluşturduğu kayıtları
toplamaya, görüntülemeye ve filtrelemeye yarıyor. Ayrıca, uygulama geliştiricilerin hata ayıklama
kayıtlarını yazıp okuyabilmesi için bazı API’ler de sağlanmakta.

Kayıtları okumak için bir uygulamanın tek alması gereken yetki, normal bir kullanıcıya oldukça masum
gözüken android.permission.READ_LOG.

Uygulama geliştiriciler Logcat’a istedikleri bilgiyi aktarabiliyorlar, bu genelde hata belirleme bilgileri
oluyor elbette. Bu bilgilerin bir kısmı gizliliği olan bilgiler (giriş bilgileri, kredi kartı numaraları vs.)
olabiliyor ve dikkatsiz programcıların kimi zaman uygulamalarını yayınlarken bu kayıtları temizlemeyi
unuttuklarını görüyoruz. Bu ciddi sorunlar yaratabilir, çünkü kötü niyetli uygulamalar tüm bu hassas
bilgileri kayıt dosyalarından ele geçirip, bir sonraki saldırılarında kullanabilirler.

Benzer şekilde, işletim sistemi de siber-saldırganların çok işine yarayabilecek bazı bilgilerin kaydını
tutuyor.

Örneğin, Android’in bazı sürümlerinde varsayılan web tarayıcısı kullanılarak bir web sitesi açıldığında,
Logcat açılan adresi kaydediyor. Bu ilk bakışta zararsız gözükse de, kötü niyetli bir yazılım kayıtları
ve kaydedilmiş adresleri inceleyerek kullanıcının davranışlarını belirleyebilir. Bu analizin sonuçlarına
dayanarak, kullanıcının en sık ziyaret ettiği sitelerin sahteleri hazırlanıp “phishing” türü kandırmacalar
planlanabilir. Kullanıcı aynı siteye tekrar erişmek istediğinde hırsız uygulama araya karışarak, gerçek
site yerine hazırlanan tuzaklı sitenin yüklenmesini sağlayabilir.

Bir diğer örnekse GPS üzerine. Sistemin sağladığı GPS servisi kullanılırken kimi uygulamalar konum
bilgisini kaydedebiliyor. Bu durumda saldırı amaçlı bir uygulama, sadece sistem kayıtlarını inceleyerek
kullanıcının konumunu adım adım izleyebilir.

Korumasız Komponentleri Kötüye Kullanmak

Android uygulamalarının genelde dört komponenti vardır: Aktivite, Servis, İçerik Sağlayıcı ve Yayın
Alıcı. Bu sayede, uygulamalar birden çok noktadan çalıştırılabilir. Bu yapıtaşlarının bağlantısız
uygulamalar tarafından çağırılmaması için Android’in yetki sistemi geliştirilmiştir.

Adres Defteri bilgileri tüm sisteme bir içerik sağlayıcı tarafından sağlanır ve bu içerik
sağlayıcıdan bilgi almak isteyen uygulamanın android.permission.READ_CONTACTS yetkisine
sahip olması gerekir. Benzer şekilde, bir uygulamanın başka uygulamaları kurabilmesi için
android.permission.INSTALL_PACKAGES yetkisini almış olması gerekir. Sistem tarafından önceden
belirlenmiş yetkilerin yanında, uygulamalar kendi yetkilerini de tanımlayabilirler. Bir uygulamanın
başka bir uygulamayı çağırabilmesi için, o çağırdığı uygulamanın gerek duyduğu yetkileri de alması
gerekir.

Buna rağmen, hala çok sayıda uygulama yetkilere gerek duymadan çalışabilmektedir. Bu, özellikle
aslında bir uygulamanın içinden çağırılacak şekilde tasarlanmış komponentler için geçerli bir durum.
Dikkatsiz programcılar, kendi uygulamalarına özel olarak gördükleri bu parçacıkların başkaları
tarafından belirlenmeyeceğini ve kullanılmayacağını düşünmek hatasına düşebilir.

Ne yazık ki bu durum kötü niyetli programcılara harekete geçme şansı veriyor. Uzman bir geliştirici,
hedef aldığı uygulamanın kodunu inceleyerek tüm gizli ve özel yapıtaşlarını ve bunları çağırmak için
gerekli komutları keşfedebilir.

Bu durum özellikle sorunlu uygulama bir sistem uygulamasıysa tam bir kriz haline dönüşüyor.
Cihazlara yüklü olarak gelen sistem uygulamaları genelde uygulama kurabilmek, hassas bilgileri
okuyabilmek ya da tüm cihazı silebilmek gibi güçlü özelliklere sahiptir. Üstelik, chazlarında “root”
yetkisini elde etmedikleri sürece kullanıcılar bu sistem uygulamalarını cihazdan silemezler de.

Güvenlik uzmanı Andre Moulu, Samsung Galaxy S3 üzerinde yüklü gelen bir çok uygulamanın ciddi
yetkilendirme açıkları olduğunu belirledi. Moulu’nun araştırmasına göre cihazdaki servislerden
birisi, özel bir dizindeki APK dosyalarını kullanıcıya hiç bir şey bildirmeden ve yetki almadan sisteme
kurabiliyor.

Moulu’nın keşiflerinden bir diğeriyse, kullanıcının haberi ve izini olmadan .APK dosyalarını SD bellek
kartı üzerindeki özel bir dizine kopyalayan bir servis. Bu iki güvenlik açığını kullanarak kötü amaçlı bir
yazılımın kullanıcının hiç haberi olmadan kendini sisteme kopyalatması ve kurdurması mümkün.

Yetkilendirme sistemi ve cihazlarınızın güvenliği konusunda daha fazlasını öğrenmek için
yayınladığımız When Android Apps Want More Than They Need Dijital Yaşam e-Kılavuzunu okumanızı
öneririz.

 

Bir cevap yazın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.