OWASP kategorisi: MASVS-STORAGE: Depolama
Genel Bakış
Düzgün şekilde yapılandırılmamış bir FileProvider, dosyaları ve dizinleri istemeden saldırganlara açık hâle getirebilir. Yapılandırmaya bağlı olarak, saldırgan bu açığa çıkmış dosyalardan okuma veya bu dosyalara yazma işlemi yapabilir. Bu durum da hassas bilgilerin sızdırılmasına veya en kötü durumda rastgele kod yürütülmesine yol açabilir. Örneğin, yapılandırmada <root-path> ayarlanmış bir uygulama, saldırganın veritabanlarında depolanan hassas bilgilere erişmesine veya uygulamanın yerel kitaplıklarının üzerine yazmasına olanak tanıyabilir. Bu da rastgele kod yürütülmesine yol açar.
Etki
Etki, yapılandırmaya ve dosya içeriğine bağlı olarak değişir ancak genellikle dosyaların okunması sırasında veri sızıntısına veya yazılması sırasında üzerine yazılmasına neden olur.
Çözümler
Yapılandırmada <root-path> yol öğesini kullanmayın.
<root-path>, cihazın kök dizinine (/) karşılık gelir. Yapılandırmada buna izin vermek, uygulamanın korumalı alanı ve /sdcard dizini de dahil olmak üzere dosya ve klasörlere rastgele erişim sağlar. Bu da saldırgan için çok geniş bir saldırı yüzeyi sunar.
Dar yol aralıklarını paylaşma
Yol yapılandırma dosyasında . veya / gibi geniş bir yol aralığını paylaşmaktan kaçının. Aksi takdirde, hassas dosyalar yanlışlıkla açığa çıkabilir. Yalnızca sınırlı/daha dar bir yol aralığı paylaşın ve yalnızca paylaşmak istediğiniz dosyaların bu yolun altında olduğundan emin olun. Bu, hassas dosyaların yanlışlıkla açığa çıkmasını önler.
Daha güvenli ayarlara sahip tipik bir yapılandırma dosyası şöyle görünebilir:
Xml
<paths>
<files-path name="images" path="images/" />
<files-path name="docs" path="docs" />
<cache-path name="cache" path="net-export/" />
</paths>
Harici URI'leri kontrol edip doğrulama
Harici URI'leri (content şeması kullanarak) doğrulayın ve uygulamanızın yerel dosyalarını işaret etmediğinden emin olun. Bu sayede, yanlışlıkla bilgi sızdırılması önlenir.
Minimum erişim izinleri verme
Bir content URI hem okuma hem de yazma erişimi izinlerine sahip olabilir. Yalnızca gereken minimum erişim izninin verildiğinden emin olun.
Örneğin, yalnızca okuma izni gerekiyorsa yalnızca FLAG_GRANT_READ_URI_PERMISSION iznini açıkça verin.
Hassas bilgileri depolamak/paylaşmak için <external-path> kullanımından kaçının
Kimliği tanımlayabilecek bilgiler (PII) gibi hassas veriler, uygulama kapsayıcısının veya sistem kimlik bilgisi depolama tesislerinin dışında saklanmamalıdır. Bu nedenle, depolanan/paylaşılan bilgilerin hassas olmadığını açıkça doğrulamadığınız sürece <external-path> öğesini kullanmaktan kaçının.