OWASP kategorisi: MASVS-CODE: Kod Kalitesi
Genel Bakış
Test veya hata ayıklama özelliklerini içeren üretim derlemelerinin yayınlanması, uygulamanın güvenlik durumunu olumsuz etkileyebilir. Bu işlevler, geliştiricilerin yeni bir sürüm yayınlanmadan önce veya sonra amaçlanan uygulama kullanım alanlarındaki hataları keşfetmesine ve tanımlamasına yardımcı olmak için kullanılır ve herkese açık olmamalıdır.
Test/ hata ayıklama özelliklerine örnek olarak şunlar verilebilir:
- Gizli menüler
- Hata ayıklama günlüklerini etkinleştirme seçenekleri
- Uygulama akışını değiştirme seçenekleri
- Ödeme veya abonelik işlemlerini atlatma seçenekleri
- Kimlik doğrulama işlemini atlama seçenekleri
- Uygulamaya özel etkinlikler için testler
Yukarıda belirtilenlerin tümü, kötü niyetli bir kullanıcı tarafından uygulamanın amaçlanan akışını değiştirmek veya daha fazla saldırıyı uyarlamak için sistem bilgilerini almak amacıyla kullanılabilir.
Açıkta bırakılan test veya hata ayıklama özelliklerinin neden olduğu risk, hata ayıklama özellikleriyle ilişkili işleme göre değişebilir.
Uygulama için bir diğer risk alanı, AndroidManifest.xml öğesi <application>
içinde ayarlanan android:debuggable özelliğidir. android:debuggable makalesinde belirtildiği gibi, yukarıda bahsedilen değer ayarlanmış bir üretim uygulamasının dağıtılması, kötü niyetli kullanıcıların normalde erişilemeyen yönetim kaynaklarına erişmesine olanak tanır.
Etki
Üretim sürümündeki bir test veya hata ayıklama özelliğiyle etkileşimde bulunan kötü niyetli bir kullanıcı, beklenmedik sonuçlara yol açabilir. Herhangi bir işlemin etkisi doğrudan özellikle ilişkili izinlerle bağlantılıdır. İzinler ne kadar yüksek olursa etkin bir saldırının etkisi de o kadar yüksek olabilir. Bir uygulamadaki bu tür işlevler, çeşitli korumaları atlatmak, ödeme duvarlarını aşmak, sistemle veya kullanıcıyla ilgili bilgileri almak ya da test etkinliklerini tetiklemek için kullanılabilir.
Risk azaltma önlemleri
Hata ayıklama bileşenleri kullanmaktan kaçının
Test veya hata ayıklama işlevleri, dışa aktarılması durumunda cihazdaki diğer işlemler tarafından çalıştırılabileceğinden etkinlikler, yayın alıcılar, hizmetler veya içerik sağlayıcılar gibi üretim uygulama bileşenlerinde hiçbir zaman uygulanmamalıdır. Hata ayıklama bileşeninin dışa aktarılmamış olarak ayarlanması (android:exported="false"), hata ayıklama seçeneği etkinse herhangi bir rootlu cihazın Android Debug Bridge (ADB) aracı üzerinden yürütmeye devam edebileceği için özellikler için geçerli bir koruma oluşturmaz.
Hata ayıklama veya test özelliklerini hazırlık derlemeleriyle sınırlama
Uygulamalardaki test veya hata ayıklama işlevlerinin yürütülmesi, yalnızca geliştiricilerin kontrollü bir ortamda uygulamanın özelliklerinde hata ayıklamasına veya bunları test etmesine olanak tanımak için yalnızca sınırlı bir hazırlık derlemesi grubuyla sınırlandırılmalıdır. Bu, uygulamanın özel bir test veya hata ayıklama derlemesi oluşturularak ve herhangi bir test veya hata ayıklama özelliğinin izole edilmiş bir sürümde çalıştırıldığından emin olmak için bu derlemeye yönelik gelişmiş enstrümanlı testler yapılarak elde edilebilir.
Otomatik kullanıcı arayüzü testleri uygulama
Bir uygulamada test çalıştırırken tekrarlanabilir, ayrı bir ortamda yürütülebilir ve insan hatalarına açık olmadıkları için otomatik kullanıcı arayüzü testlerini tercih edin.
Kaynaklar
- Gelişmiş test kurulumlarıyla ilgili geliştirici kılavuzu
- Kullanıcı arayüzü testlerini otomatikleştirme hakkında geliştirici rehberi
- android:debuggable
- android:exported
- Android Market'teki Hata Ayıklanabilir Uygulamalar
- Hata ayıklama kodu, güvenlik açıklarına neden olabilir mi?