// SECURITY AUDIT

Rapport d'audit de sécurité

Faites confiance, mais vérifiez — chaque conclusion d'audit est publiée ici.

Vue d'ensemble de l'audit

Publié
📅 Date d'audit : 2026-06-01📄 Périmètre : les 159 fichiers .dart de lib/ · 14 plugins .html dans plugins/ · config android/🔬 Méthode : vérification croisée entre fichiers + audit par couches de bas en haut
0
Critique
0
Élevé
0
Moyen
0
Faible
0
Confirmé sûr

Verdict général : la posture de sécurité du projet est saine. Les mécanismes centraux sont correctement implémentés : chiffrement des données sensibles Hive, isolation sandbox, HTTPS forcé. Les principaux problèmes portent sur la gestion des clés de la machine de build Android, quelques boîtes Hive hors périmètre de chiffrement et la saisie de mots de passe dans la couche plugins.

🔧
Progrès des corrections depuis la publication : les versions ultérieures ont déjà corrigé plusieurs points — clés API par fournisseur dans des compartiments chiffrés (v1.7.0), faux chiffrement du gestionnaire de mots de passe réécrit en vrai AES-256-GCM (v1.7.0), persistance 2FA (v1.7.0), vérification SSL stricte dans la boîte à outils réseau (v1.7.0), filtrage des champs sensibles du presse-papiers (v1.7.0), rechiffrement automatique au changement du mot de passe maître (v1.1.0). Correctifs récents : voir le journal des modifications.

Problèmes réels confirmés

🔴 Critique

Critique
#1 Mot de passe de la clé de signature Android en clair — la phrase secrète de la clé de signature est stockée en clair dans la config de la machine de build ; compromettre la machine équivaut à compromettre la clé de signature.

🟠 Élevé

Élevé
#2 La boîte ai_plugin_projects stocke aiApiKey non chiffrée — les clés IA au niveau projet sont persistées en clair dans Hive, hors périmètre de chiffrement.
Élevé
#3 Clé de licence de test codée en dur dans le marché de plugins — les identifiants de test ne devraient pas figurer dans les builds de sortie.
Élevé
#4 Permission REQUEST_INSTALL_PACKAGES — l'app demande l'installation depuis des sources inconnues ; le cas d'usage devrait être minimisé.

🟡 Moyen

Moyen
#5 Clé API Baidu Translate transmise en paramètre GET — la clé peut apparaître dans les journaux d'accès / l'historique.
Moyen
#6 Les plugins saisissent les mots de passe de chiffrement via prompt() — la saisie de mots de passe dans le sandbox devrait passer par le clavier sécurisé de l'hôte.
Moyen
#7 Mot de passe de sauvegarde auto WebDAV stocké dans Hive — à confirmer qu'il est dans une boîte chiffrée.
Moyen
#8 Permission RECORD_AUDIO — devrait être demandée à la demande uniquement pour l'enregistrement, pas en permanence.

🟢 Faible

Faible
#9 La boîte sticky_notes stocke les notes utilisateur non chiffrées
Faible
#10 Le plugin de comptabilité stocke les données financières en clair
Faible
#11 Indicateur requestLegacyExternalStorage — à retirer à la montée de targetSdk
Faible
#12 Le plugin de favoris autorise les URLs http:// — les pages en clair devraient afficher un avertissement de dégradation par défaut
Faible
#13 L'export de journaux d'erreur peut exposer des chemins internes — les traces contiennent chemins de fichiers et structure du code

⚪ Problèmes présumés (confirmation manuelle requise)

Présumé
S1 Usage répandu d'innerHTML dans les plugins (13/14 plugins) — la plupart échappent déjà via escapeHtml(), et la CSP du sandbox limite les scripts externes, mais tout échappement manqué est un XSS DOM potentiel.
Présumé
S2 Appels console.log / console.error dans les plugins — la sortie va dans logcat ; le contenu est des objets d'erreur sans données utilisateur, risque faible.

Conceptions confirmées sûres

Les mécanismes suivants ont passé la vérification croisée entre fichiers et sont confirmés sûrs et efficaces :

#MécanismeVoie de vérificationStatut
1Protection matérielle des clés de chiffrement HiveFlutterSecureStorage → Android Keystore / iOS Keychain
27/7 boîtes sensibles chiffréesvérifié dans main.dart ; les boîtes sensibles s'ouvrent toutes avec cipher
3Sauvegardes forcément chiffréespas de mot de passe → UnencryptedBackupException
4Algorithme de chiffrement des sauvegardesPBKDF2 (300k tours) + AES-256-GCM
5Zéro surcharge de journalisation en releasetoutes les sorties de log dans kDebugMode
6WebDAV HTTPS forcéles configurations HTTP sont rejetées directement
7eval / Function désactivés dans le sandboxcouverture totale Object.defineProperty
8Injection CSP dans le sandboxmeta tag + en-tête HTTP, double voie
9Protection anti path traversalcontrôles de sécurité à l'import de plugins et à la restauration
10Autres points confirméschiffre de sauvegarde v3, flux de restauration atomique, FLAG_SECURE sur les pages sensibles, etc.
🔬
Le rapport complet (avec emplacements de code et recommandations de correction par point) sera publié avec le dépôt open source. Ceci est la version condensée. La sécurité est notre fondation — toute découverte est la bienvenue via les retours.
MODE MATRIX : ACTIF — recommencez ou ÉCHAP pour quitter