CCExtractor / CCExtractor/taskwarrior-flutter

Sensitive Credentials Stored in Plain Text Files Without Encryption

Ouverte
#645 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
bug
Langage dominant
Dart
Étoiles
244
Forks
179
Merge moyen
12 h 42 min
PR mergées (30 j)
2

Description

### Describe your issue

The application stores sensitive credentials such as clientId and encryptionSecret in plain text files inside the local file system (profiles/{profile}/). These files are not encrypted, making the data vulnerable if the device is compromised (e.g., rooted Android or jailbroken iOS).

Although SharedPreferences is used, it only stores the base directory path. The actual issue lies in insecure file storage of sensitive data.

This can lead to unauthorized access, credential leakage, and potential misuse of backend APIs.

### Steps to reproduce

Install and run the application
Login or initialize credentials storage
Navigate to the app’s local storage directory

**Open the path:**

/profiles/{profile}/taskc_client_id
/profiles/{profile}/taskc_client_secret
Observe that credentials are stored in plain text

### What was the expected result?

Sensitive credentials should be stored securely using encrypted storage mechanisms such as:

Secure Keychain (iOS)
Android Keystore
Or encrypted storage solutions

Credentials should not be directly readable from the file system.

### Put here any screenshots or videos (optional)

_No response_

### How can we contact you (optional)

_No response_

### Would you like to work on this issue?

Yes

### By submitting this issue, I have confirmed that:

- [x] I have starred the repo ⭐ and watched 👀 it on GitHub and followed the contribution guidelines.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Repérez le code de stockage des identifiants qui écrit profiles/{profile}/taskc_client_id et profiles/{profile}/taskc_client_secret, puis examinez en quoi le stockage diffère sur Android et iOS. Examinez l’utilisation existante de SharedPreferences et les options de stockage sécurisé de la plateforme disponibles ; le travail est considéré comme terminé lorsque les identifiants sont chiffrés ou conservés dans le stockage sécurisé de la plateforme, plutôt que d’être directement lisibles depuis le système de fichiers local.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
dart, flutter
Domaine
mobile-dev, security
Type d'issue
Bug
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.