dotnet / dotnet/maui

Maui Essentials MAPT M02:2024 – INSECURE FILE PROVIDER PATH SETTING

Open
#31,097 3 comments 1 reaction 0 assignees View on GitHub
area-essentials platform/android proposal/open
Dominant language
C#
Stars
23.3k
Forks
2k
Avg merge
1d 14h
Merged PRs (30d)
296

Description

### Description

The microsoft_maui_essentials_fileprovider_file_paths.xml file is identified as a potential security vulnerability during a Mobile Application Penetration Test.
The primary concern lies in the following XML section:

```xml

```

The issue arises from the exposure of the “.” path, which allows access to the entire cache directory. Even if the Exported attribute is set to false and the GrantUriPermissions attribute is set to true, this configuration does not justify the exposure of the “.” path.

For instance, the MediaPicker.android.cs class should not utilize the root directory:

```csharp
var tmpFile = FileSystemUtils.GetTemporaryFile(Application.Context.CacheDir, fileName);
```

Instead, a subfolder, such as “MediaPicker”, should be used. This modification allows the fileProvider to restrict access to the cache directory to the “MediaPicker” subfolder, thereby minimizing the potential impact of a security breach.

### Public API Changes

Do not use the Application.Context.CacheDir, or any other app folder, directly if it is not necessary and make the fileProvider file more granular

### Intended Use-Case

Improve security of the applications generated with .NET MAUI

Contributor guide

Open the contributing guide

Research direction

Start by reading microsoft_maui_essentials_fileprovider_file_paths.xml and the MediaPicker.android.cs usage of Application.Context.CacheDir. Trace the file-provider paths used by the affected Android features and identify which app subfolders they require. Done means the provider exposes only granular necessary paths and the affected file creation uses those subfolders without breaking the intended use case.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, csharp
Domain
mobile, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.