Tapjacking, Android Marshmallow'da Geri Dönüş Yaptı ve Kimse Fark Etmedi

Bazı Marshmallow cihazları, bir uygulamanın kullanıcıyı kandırmak için izin iletişim kutusunun üstüne metin yerleştirdiği dokunma hırsızlığına karşı hassastır.

Birçoğumuzun Nexus cihazları için yeni çıkan Android Nougat'ı karşısında ağzımız sulanırken, kullanıcıların büyük çoğunluğu hâlâ Android Marshmallow kullanıyor. O zamandan beri varlığı belgelenen bir istismar en azından 2015'in ortasında hala birçok modern Android cihazını etkiliyor.

Kötü amaçlı uygulamalar şunları yapabilir: musluk eylemleriniz onlara asla açıkça vermediğiniz bir izni vermek. İşte istismarın nasıl çalıştığı.


Tapjacking'in Dönüşü

Instagram'ı açtığınızı ve yakın zamanda tatildeyken çektiğiniz bir fotoğrafı paylaşmaya çalıştığınızı hayal edin. Bir resim için galerinize göz atmayı seçtiğinizde Instagram, depolama alanınıza erişim izni vermenizi ister. Ancak "evet"e dokunduğunuzda bir hata mesajıyla karşılaşırsınız.

Aktif ekran yer paylaşımını etkinleştirdiğiniz için Instagram için depolama izni veremiyorsunuz - Bu durumda, ekranınızı renklendiren birçok uygulamadan biri, böylece geceleri telefonunuzu kör etmeden kullanabilirsiniz kendin. Bu Android izin sisteminin bir örneğidir

Amaçlandığı gibi çalışmak: Bir uygulamaya hassas bir izin vermek için cihazınızda bulunan tüm ekran kaplamalarını devre dışı bırakmanız gerekir.

Marshmallow İzinli Tapjacking. "İzin Ver"e dokunduğunuzda tüm kişilerim gösterilir.

Ekranınızın üzerine çizim yapma yeteneğine sahip uygulamalar, hassas verileri beslemeniz için sizi kandırabilir. Örneğin, bir ekran kaplaması, şifrelerinizi toplamak için gerçek bir giriş ekranının üzerine sahte bir şifre girişi yerleştirebilir. Böyle bir istismara denir 'tık çalma' ve yıllar boyunca çeşitli Android sürümlerinde ortaya çıktı ve yamalar uygulandı; Android 4.0.3'e kadar süren en kötü örneklerden biri. Ancak son zamanlarda bu istismar geri döndü Android Marshmallow'un çalışma zamanı izin modeli.

Adında bir geliştirici Iwo Banaś bir yarattı başvuru istismarı gösteriyor. Çalışma şekli oldukça basittir; bir uygulama bir izin iletişim kutusu görüntülediğinde, kötü amaçlı uygulama yüklediğiniz, izin iletişim kutusunun metin bloğunu hangi metinle kaplayacak bir sistem katmanı görüntüleyecektir istiyor. İzin iletişim kutusunda "izin ver" seçeneğini farkında olmadan tıklayan bir kullanıcı, kendisinden istenen izni vermesi için kandırılacaktır, ancak bu izin için istek kullanıcının görüşünden gizlenecektir. Böyle bir istismar, Android Marshmallow'un piyasaya sürülmesinden bu yana izin sisteminin amacını tamamen boşa çıkarıyor. yeni modelin kullanıcıların yalnızca açıkça rıza gösterdikleri izinleri almasını sağlaması gerekiyordu.

Artık ne düşündüğünü biliyorum. Android bir sistem katmanı tespit edip Instagram depolama izinleri vermemi engelleseydi bu istismarın gerçekleşmesini engellemez miydi? Cevap hayırtestlerimde, bazı cihazlarda izin iletişim kutusunun üstünde bir metin katmanının görüntülenmesinin güvenlik mekanizmasını tetiklemediği görülüyor. Konsept kanıtı tapjacking uygulamasının geliştiricisi, istismarın etkili olduğunu çünkü kullanıcının API düzeyi 22 ve altını hedefleyen ikincil bir kötü amaçlı uygulama yüklemesine dayanır (Marshmallow öncesi). Bunun nedeni Android Marshmallow'dan önce tüm uygulamalara kurulum sırasında izin verilmesidir.

Tamam, eğer Marshmallow kullanıyorsanız tek yapmanız gereken, kaplama çizme izni isteyen, güvenmediğiniz uygulamaları yüklemekten kaçınmaktır, değil mi? Android'in izin modeli başlangıçta belirtildiği gibi çalışıyor olsaydı haklı olurdunuz. Ancak bu istismarın keşfedilmesinden bu yana, API düzeyi 23'ü hedefleyen uygulamalar bile (Marshmallow) kaplama izni isteyen potansiyel bir risktir.


İzin Modelinde Bir Boşluk mu Var?

Kaplamaları Kullanan Tipik Uygulamalar. Aracılığıyla: Orta

Arkadaşlarınızla sohbet etmek için Facebook Messenger'ı kullanan milyonlarca kişiden biriyseniz, o zaman Android'in en iyi özelliklerinden biriyle karşılaştınız: uygulamaların diğerlerinin üzerine çizim yapma yeteneği ekranlar. Favori Facebook grup sohbetinizde, kullanıcıyı açtığı herhangi bir uygulamanın üstünde takip ederek bir baloncuk oluşturabilmeniz ne kadar harika? Her ne kadar Facebook'un Messenger'ı "kayan uygulamalar" fikrini ana akım haline getirmiş olsa da, bu kavram Android'de bir süredir varlığını sürdürüyor. Uygulamalar, bir süredir uygulamalarınızın üzerinde kaplamalar oluşturabiliyordu. TYPE_SYSTEM_OVERLAY Android'in WindowManager'ında.

"Diğer uygulamaların üzerine çizim yapın" İzin Menüsü

Android Marshmallow'dan önce uygulamaların çağrılan bir izin istemesi gerekiyordu. SYSTEM_ALERT_WINDOW kurulum sırasında ekranınızın üst kısmında katmanlar görüntülenemeden önce. Ancak bu durum, 6.0'ın ayrıntılı çalışma zamanı izin modelinin sunulmasıyla değişti. Kullanıcıların artık uygulamayı gerçekten çalıştırırken uygulamalara izin vermesi gerekecek ve bu da ortalamayı artıracağını umuyoruz kullanıcıyı, görünüşte işlevsel olarak ilgisiz görünen şüpheli uygulamalardan kendi özel verilerini korumaya zorlayın izinler.

Ancak SYSTEM_ALERT_WINDOW diğer izinlere benzemez. Geliştiriciler, Marshmallow'u hedefleyen herhangi bir uygulamadaki diğer izinlerin çoğunda olduğu gibi, son kullanıcı tarafından verilen izni programlı olarak istemek için bir iletişim kutusu görüntüleyemez. Bunun yerine, ayarlar ekranına manuel olarak gitmeniz ve izni kendiniz etkinleştirmeniz gerekir. Elbette Facebook Messenger gibi bazı uygulamalar da süreç boyunca size yardımcı olacaktır.

Google geliştiricilerden bunu talep ediyor çünkü iznin "özellikle hassas."

Özel İzinler

Normal ve tehlikeli izinler gibi davranmayan birkaç izin vardır. SYSTEM_ALERT_WINDOW ve WRITE_SETTINGS özellikle hassas olduğundan çoğu uygulama bunları kullanmamalıdır. Bir uygulamanın bu izinlerden birine ihtiyacı varsa, bu izni manifestte belirtmeli ve kullanıcıdan yetki talep eden bir niyet göndermelidir. Sistem kullanıcıya detaylı bir yönetim ekranı göstererek amaca cevap verir.

Tapjacking hakkında yukarıda bildiklerimiz göz önüne alındığında, bu mantıklıdır. Ama olay şu ki. Google kendi kurallarına bile uymuyor. Yukarıda gösterdiğim SYSTEM_ALERT_WINDOW iznini verme sürecinde size yol gösteren Facebook Messenger'ın ekran görüntüleri? Bu yalnızca APK'yı Google Play Store'un dışından yüklerseniz gerçekleşir. Google Play Store'dan bir uygulama yüklerseniz, SYSTEM_ALERT_WINDOW izni otomatik olarak verilir.

Facebook Messenger'ın Manifest Dosyası. API düzeyi 23'ü hedeflemesine rağmen uygulamaya otomatik olarak yer paylaşımı izni verilir.

Google, Kolaylık İçin Güvenliği Feda Etti

Android Marshmallow'dan çok önce SYSTEM_ALERT_WINDOW bir "tehlikeli" izin. Android Marshmallow 6.0 ile izin şu şekilde değiştirildi: imza|sistem|appop başlangıçta geliştiricilerin izin vermek için kullanıcıyı ayarlar ekranına yönlendirmesini gerektiren şey buydu. Ancak Android 6.0.1 sürümüyle, SYSTEM_ALERT_WINDOW değiştirildi böylece Google Play Store otomatik olarak izni verebilirKullanıcıya haber vermeden. Google'ın bu değişikliği neden yaptığı bizim için belirsizdir. Google'ın kendisi bu değişikliği neden yaptığını açıklamadı ve bu, web sayfalarında hala mevcut olan SYSTEM_ALERT_WINDOW dili göz önüne alındığında özellikle tuhaf.

Bu mümkün yeterince geliştirici öfkelendi SYSTEM_ALERT_WINDOW'da yapılan ilk değişikliklerle, kullanıcıların, Google'ın sessizce geri çevirdiği izni manuel olarak vermesini ve bunu isteyen herhangi bir uygulamaya vermesini gerektirdi. Ancak bunu yaparken Google kolaylık sağlamak için güvenliği feda etti. Google'ın bu izni uzun süre tehlikeli olarak görmesinin bir nedeni var, çünkü öyle. Ve Marshmallow izinli tapjacking istismarının varlığı, bu izni herhangi bir uygulamaya otomatik olarak vermenin doğasında olan tehlikelere dair yeterli kanıttır.

Bu telefon çalma istismarı, aylardır mevcut olmasına rağmen, yakın zamanda dikkatimize sunuldu. XDA Portal ekibi arasında cihazlarımıza yönelik dahili testlerimizde şunları doğruladık: bu istismar Android Marshmallow çalıştıran birçok modern cihazda çalışıyor. Burada, ilgili her cihaz için mevcut en son yazılım sürümlerinde test ettiğimiz cihazların hızlı bir özetini ve tapjacking istismarının çalışıp çalışmadığını bulabilirsiniz. "Hassas" olarak işaretlenen cihazlar, dinleme hırsızlığı istismarına karşı hassastır; "Değil" olarak işaretlenen cihazlar ise Savunmasız", kaplamayı görüntüleyen bir uygulamayı tespit edebilir ve daha önce onu devre dışı bırakmanızı talep edebilir devam ediyor.

  • Nextbit Robin - Haziran güvenlik düzeltme ekleriyle Android 6.0.1 - Hassas
  • Moto X Pure - Mayıs ayı güvenlik yamalarıyla Android 6.0 - Hassas
  • Honor 8 - Temmuz güvenlik yamalarıyla Android 6.0.1 - Hassas
  • Motorola G4 - Mayıs güvenlik düzeltme ekleriyle Android 6.0.1 - Hassas
  • OnePlus 2 - Haziran güvenlik düzeltme ekleriyle Android 6.0.1 - Savunmasız Değil
  • Samsung Galaxy Note 7 - Temmuz güvenlik yamalarıyla Android 6.0.1 - Savunmasız Değil
  • Google Nexus 6 - Ağustos güvenlik düzeltme ekleriyle Android 6.0.1 - Savunmasız Değil
  • Google Nexus 6P - Ağustos güvenlik düzeltme ekleriyle Android 7.0 - Savunmasız Değil

Şu ana kadar ekibe test ettirebildiğim cihazların hepsi bunlar. Güvenlik yaması sürümü ile istismar arasında herhangi bir ilişki bulamadım. Bizimkilerden de anlayabileceğiniz gibi Android güvenlik güncellemeleriyle ilgili en son tartışma, birçok kişi zaten en son güvenlik yamalarını çalıştırmıyor ve bu nedenle muhtemelen bu istismara ve sayfada özetlenen diğerlerine karşı savunmasız durumdalar. Android Güvenlik Bülteni.


İleriye Doğru

Tapjacking Hizmetine Yer Paylaşımı İzni Verildi

Savunmasız olup olmadığınızı görmek için bu istismarı cihazınızda kendiniz test etmenizi öneririz.. APK'ları şuradan derledik: yukarıda bağlantılı kaynak kodu (bunu kendiniz de yapabilirsiniz) ve bunları AndroidFileHost'a yüklediniz. İstismarı test etmek için her ikisini de yüklemeniz gerekir. ana tapjacking uygulaması aynı zamanda onun yardımcı hizmeti. Daha sonra ana uygulamayı çalıştırın ve "test" düğmesine tıklayın. İzin iletişim kutusunun üstünde bir metin kutusu beliriyorsa ve "izin ver" seçeneğini tıkladığınızda cihazınızdaki kişilerin listesi görünüyorsa, cihazınız dokunma hırsızlığına karşı savunmasızdır. Kayan metin kutusunun izin iletişim kutusunu tamamen kaplamaması konusunda endişelenmeyin; bu kavram kanıtlama uygulaması, izin iletişim kutusunun nasıl düzgün bir şekilde ele geçirileceğini mükemmel bir şekilde göstermeyi amaçladı, daha ziyade bunun gerçekten olduğunu kanıtlamayı amaçladı olası.

Bu istismarın tüm Marshmallow cihazlarına yamasını sağlayacak bir düzeltmenin sunulmasını ve OEM'lerin tüm cihazlarını en son güvenlik yamasına güncellemesini umuyoruz. Çünkü gerçek şu ki, taahhüt edilen cihazların çoğunun Nougat'ı alması aylar sürecek, bu yüzden çoğu için tek yol kullanıcıların zarar görmemesi için ya en son güvenlik yamalarını yüklemeleri ya da izleme uygulaması izinlerini almaları gerekir kendileri. Ancak Google'ın potansiyel olarak tehlikeli SYSTEM_ALERT_WINDOW iznini otomatik olarak verme kararıyla, birçok kişi Kullanıcılar bilmeden, telefonlarını ele geçirerek giderek daha tehlikeli uygulamalara yol açabilecek uygulamaları çalıştırıyorlar. izinler.