Implicit (Kapalı) PendingIntent Güvenlik Açığı Düzeltmesi

Bu bilgi, Implicit PendingIntent Güvenlik Açığı içeren uygulamalara sahip geliştiriciler için hazırlanmıştır.

Neler oluyor?

Uygulamalarınızın biri veya birkaçı, hizmet reddi, gizli veri hırsızlığı ve ayrıcalık artırma biçiminde güvenlik tehditlerine neden olabilecek Dolaylı PendingIntent sorunu içeriyor. Uygulamalarınızla ilgili sorunu düzeltmek için lütfen aşağıda ayrıntılı bir şekilde anlatılan adımları inceleyin. Uygulamanızdaki Implicit PendingIntent kullanımlarının konumunu, uygulamanızın Play Console bildiriminde bulabilirsiniz. Bir konum "(dinamik olarak yüklenen kodda)" ifadesi ile bitiyorsa bu konum, uygulama tarafından veya uygulamanın kullandığı kitaplıklar tarafından dinamik olarak yüklenen koddadır. Uygulamalar, dinamik olarak yüklenen kodları genellikle isteğe bağlı özellik yayınlama üzerinden kullanır. Bununla birlikte, bazı önerilmeyen teknikler de vardır (önerilmeyen tekniklerden bazıları ise Google Play politikasını ihlal ettiğinden kullanılmamalıdır). Ayrıca paketleyiciler uygulama kodunu dinamik olarak yüklenen koda dönüştürebilir.

Bu sorunun çözülmesi önerilir ancak zorunlu değildir. Uygulamanızın yayınlanma durumu bu sorundan etkilenmez.

Ek bilgiler

Android uygulamaları, Intent'leri kullanarak bileşenler arasında mesaj gönderir. Intent'ler, hedef bileşeni (Belirgin Intent) belirtebilir veya genel bir işlem listeleyip işletim sisteminin Intent'i, cihazda bu işlemle (Implicit Intent) eşleşen Intent Filtresi kaydeden herhangi bir bileşene sunmasını sağlar.

PendingIntent'ler, gelecekte başka bir uygulamaya sunulmak üzere yetkilendirilen Intent'lerdir. PendingIntent'in altında sarmalanmış implicit intent oluşturmak, hizmet reddi, gizli veri hırsızlığı ve ayrıcalık artırmaya yol açabilecek bir güvenlik açığıdır.

Sonraki Adımlar

1. Uygulamanızı güncelleyip aşağıdaki adımları izleyerek "Dolaylı PendingIntent" uyarılarını düzeltin.

PendingIntent'in oluşturulduğu yeri belirlemek için uygulamanızı inceleyin. Örneğin, aşağıdaki kod, dolaylı intent'i sarmalayan bir PendingIntent oluşturur:

// Dolaylı bir temel Intent oluşturup PendingIntent öğesinde sarmala

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

PendingIntent pi = PendingIntent.getService(this, 0, base, 0);

Google, geliştiricilerin aşağıdakilerden birini uygulayarak (hatta tümünü uygulamak daha iyi olur) güvenlik açığını düzeltmelerini önerir:

  • Temel Intent'in action (işlem), package (paket) ve component (bileşen) alanlarının ayarlandığından emin olmak;
  • PendingIntent'in yalnızca güvenilir bileşenlere sunulduğundan emin olmak;
  • PendingIntent'leri oluşturmak için FLAX_IMMUTABLE (SDK 23'te eklendi) kullanmak. Bu, PendingIntent'i alan uygulamaların doldurulmamış özellikleri doldurmasını engeller. Uygulamanın, SDK 22 veya daha eski bir sürümü çalıştıran cihazlarda da çalışması durumunda geliştiricilerin, aşağıdaki kalıpla PendingIntent oluşturmayı güçlendirirken önceki seçenekleri uygulamaları önerilir:

if (android.os.Build.VERSION.SDK_INT >= 23) {

// FLAG_IMMUTABLE kullanarak PendingIntent oluştur

} else {

// PendingIntent oluşturan mevcut kod

}

2. Güncellenmiş APK'nızı gönderin

Güncellenmiş bir uygulama paketi veya APK göndermek için:

  1. Play Console hesabınıza gidin.
  2. Uygulamayı seçin.
  3. Uygulama paketi gezgini'ne gidin.
  4. Sağ üstteki açılır menüden uyumlu olmayan APK/uygulama paketinin uygulama sürümünü seçip bunların hangi sürüm kapsamında olduğunu not edin.
  5. Politika sorununun olduğu kanala gidin. Şu 4 sayfadan biri olacaktır: Dahili / Kapalı / Açık test veya Üretim.
  6. Sayfanın sağ üst tarafına yakın yerde bulunan Yeni sürüm oluştur'u tıklayın. (Önce Kanalı yönet seçeneğini tıklamanız gerekebilir)
    • İhlale neden olan APK'nın bulunduğu sürüm taslak halindeyse sürümü silin.
  7. Uygulama paketlerinin veya APK'ların politikaya uygun sürümlerini ekleyin.
    • Uygulama paketlerinin veya APK'ların uyumlu olmayan sürümünün, bu sürümün Dahil olmayanlar bölümünde bulunduğundan emin olun. Daha fazla bilgi için lütfen bu Play Console Yardım makalesindeki "Dahil olmayanlar (uygulama paketleri ve APK'lar)" bölümüne göz atın.
  8. Sürümünüzde yaptığınız değişiklikleri kaydetmek için Kaydet'i seçin.
  9. Sürümünüzü hazırlamayı bitirdiğinizde Sürümü incele'yi seçin.

Uyumlu olmayan APK birden fazla kanalda yayınlandıysa her kanal için 5 ile 9 arasındaki adımları tekrarlayın.

Bu süre zarfında yeni uygulamanız veya uygulama güncellemeniz, isteğiniz incelenene kadar yayınlanmak üzere inceleniyor durumunda kalır. Uygulama doğru şekilde güncellenmediyse uyarıyı görmeye devam edersiniz.

Yardıma hazırız

Güvenlik açığı hakkında teknik sorularınız varsa “android-security” etiketini kullanarak sorularınızı Stack Overflow'da yayınlayabilirsiniz. Bu sorunu çözmek için uygulamanız gereken adımlarla ilgili bilgi almak isterseniz geliştirici destek ekibimize ulaşabilirsiniz.

Bu size yardımcı oldu mu?

Bunu nasıl iyileştirebiliriz?
false
Ana menü
14549453499918433939
true
Yardım Merkezinde Arayın
true
true
true
true
true
5016068
false
false