OWASP kategorisi: MASVS-STORAGE: Depolama
Genel Bakış
Düzgün şekilde yapılandırılmamış bir FileProvider
, dosyaları ve dizinleri istemeden bir saldırgana açabilir. Yapılandırmaya bağlı olarak, saldırganlar bu açık dosyalardan veri okuyabilir veya bu dosyalara veri yazabilir. Bu da hassas bilgilerin sızdırılmasına veya en kötü durumda keyfi kod çalıştırılmasına neden olabilir. Ö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ıyarak keyfi kod yürütmesine yol açabilir.
Etki
Etki, yapılandırmaya ve dosya içeriğine bağlı olarak değişir ancak genellikle dosyaların veri sızıntısına (okuma sırasında) veya üzerine yazılmasına (yazma sırasında) neden olur.
Çözümler
Yapılandırmada <root-path> yol öğesini kullanmayın
<root-path>
, cihazın kök dizine (/
) karşılık gelir. Yapılandırmada buna izin verilmesi, uygulamanın korumalı alanı ve /sdcard
dizini de dahil olmak üzere dosya ve klasörlere keyfi erişim sağlar. Bu da saldırgana çok geniş bir saldırı alanı sunar.
Dar yol aralıklarını paylaşma
Yol yapılandırma dosyasında .
veya /
gibi geniş bir yol aralığı paylaşmayın. Aksi takdirde, hassas dosyaların yanlışlıkla açığa çıkmasına neden olabilirsiniz. Yalnızca sınırlı/daha dar bir yol aralığını paylaşın ve bu yol altında yalnızca paylaşmak istediğiniz dosyaların bulunduğundan emin olun. Bu sayede, hassas dosyaların yanlışlıkla ifşa edilmesi önlenir.
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 etme ve doğrulama
Harici URI'leri (content
şeması kullanarak) doğrulayın ve bunların uygulamanızın yerel dosyalarını işaretlemediğinden emin olun. Bu sayede, yanlışlıkla bilgi sızıntısı yaşanmaz.
Minimum erişim izinleri verme
content URI
'ların hem okuma hem de yazma erişim izinleri 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> parametresini kullanmaktan kaçının
Kimliği tanımlayabilecek bilgiler (PII) gibi hassas veriler, uygulama kapsayıcısı veya sistem kimlik bilgisi depolama tesislerinin dışında depolanmamalı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.