Vurma

OWASP kategorisi: MASVS-PLATFORM: Platform Interaction (Platform Etkileşimi)

Genel Bakış

Tapjacking, clickjacking web güvenlik açığının Android uygulamalarındaki karşılığıdır: Kötü amaçlı bir uygulama, kullanıcı arayüzünü bir yer paylaşımıyla veya başka yollarla gizleyerek kullanıcıyı güvenlikle ilgili bir kontrolü (ör. onay düğmesi) tıklamaya ikna eder. Bu sayfada, iki saldırı varyantı arasında ayrım yapıyoruz: Tam ve kısmi kapatma. Tam kapatma saldırısında saldırgan, dokunma alanını kaplarken kısmi kapatma saldırısında dokunma alanı görünür kalır.

Etki

Tapjacking saldırıları, kullanıcıları belirli işlemleri yapmaya ikna etmek için kullanılır. Etki, saldırganın hedeflediği işleme bağlıdır.

Risk: Tam tıkanma

Tam kapatma durumunda saldırgan, dokunma etkinliğini ele geçirmek için dokunma alanını kaplar:

Tam tıkanma görüntüsü

Risk azaltma önlemleri

Tam kapatma, koddaki View.setFilterTouchesWhenObscured(true) ayarıyla önlenir. Bu ayar, yer paylaşımı tarafından iletilen dokunmaları engeller. Bildirim temelli bir yaklaşımı tercih ederseniz korumak istediğiniz View nesnesinin düzen dosyasına android:filterTouchesWhenObscured="true" de ekleyebilirsiniz.


Risk: Kısmi tıkanma

Kısmi kapatma saldırılarında dokunma alanı kapatılmaz:

Kısmi tıkanma görüntüsü

Risk azaltma önlemleri

Kısmi tıkanma, FLAG_WINDOW_IS_PARTIALLY_OBSCURED işaretine sahip dokunma etkinliklerinin manuel olarak yoksayılmasıyla azaltılır. Bu senaryoya karşı varsayılan koruma yoktur.

Olası uyarı: Bu azaltma, zararsız uygulamaları etkileyebilir. Kısmi tıkanmaya zararsız bir uygulama neden olduğunda kullanıcı deneyimini olumsuz etkileyeceğinden bu düzeltmenin kullanıma sunulması bazı durumlarda mümkün değildir.


Belirli riskler

Bu bölümde, standart dışı azaltma stratejileri gerektiren veya belirli bir SDK düzeyinde azaltılmış olan ve eksiksiz olması için buraya eklenen riskler toplanmıştır.

Risk: android.Manifest.permission.SYSTEM_ALERT_WINDOW

SYSTEM_ALERT_WINDOW izni, bir uygulamanın tüm uygulamaların üzerinde gösterilen bir pencere oluşturmasına olanak tanır.

Risk azaltma önlemleri

Android'in yeni sürümlerinde aşağıdakiler de dahil olmak üzere çeşitli çözümler sunulmuştur:

  • Android 6 (API düzeyi 23) ve sonraki sürümlerde kullanıcıların, uygulamanın yer paylaşımı penceresi oluşturması için açıkça izin vermesi gerekir.
  • Android 12 (API düzeyi 31) ve sonraki sürümlerde uygulamalar, true değerini Window.setHideOverlayWindows() içine iletebilir.

Risk: Özel durum mesajı

Saldırganlar, Toast.setView() kullanarak toast mesajının görünümünü özelleştirebilir. Android 10 (API düzeyi 29) ve önceki sürümlerde kötü amaçlı uygulamalar, bu tür bildirimleri arka planda başlatabiliyordu.

Risk azaltma önlemleri

Android 11'i (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalarda sistem, arka plandaki özel toast'ları engeller. Ancak bu azaltma, bazı durumlarda Toast burst kullanılarak atlatılabilir. Bu durumda saldırgan, ön plandayken birden fazla toast mesajı sıraya alır ve uygulama arka plana geçtikten sonra bile bu mesajlar başlatılmaya devam eder.

Arka planda gösterilen kısa mesajlar ve kısa mesaj patlaması saldırıları, Android 12'den (API düzeyi 31) itibaren tamamen azaltılmıştır.


Risk: Etkinlik sandviçi

Kötü amaçlı bir uygulama, kullanıcıyı uygulamayı açmaya ikna etmeyi başarırsa mağdur uygulamanın etkinliğini başlatabilir ve ardından kendi etkinliğiyle bu etkinliğin üzerine yerleşerek etkinlik sandviçi oluşturup kısmi kapatma saldırısı gerçekleştirebilir.

Risk azaltma önlemleri

Kısmi tıkanma için genel azaltma yöntemlerine bakın. Derinlemesine savunma için, saldırganların araya girmesini önlemek amacıyla dışa aktarılması gerekmeyen etkinlikleri dışa aktarmadığınızdan emin olun.


Kaynaklar