Sécurité¶
Parallaxe lit des fichiers non fiables sur le disque des utilisateurs : assets de marketplaces, packs d'origine inconnue, fichiers endommagés. Chaque parseur de format est une surface d'attaque. Utiliser Tauri ne rend pas sûres des commandes trop puissantes.
Règles¶
- Les originaux sont en lecture seule. Aucun chemin de code n'écrit, ne déplace, ne renomme ni ne supprime dans une racine.
- La WebView manipule des IDs, pas des chemins. Rust résout et borne chaque chemin.
- Accès aux ressources scopé. Buffers et textures glTF sont servis par un protocole limité à racine + ID d'asset, jamais un chemin
file://libre. - Résolution canonique. Les
../qui sortent de la racine, les chemins absolus non autorisés et les symlinks vers l'extérieur sont refusés. - Aucun réseau depuis un asset. Les URL distantes d'un glTF ou de métadonnées ne sont pas résolues dans le MVP.
- Des budgets partout. Nombre de fichiers, longueur de chemin, dimensions décodables, triangles, taille de buffers, temps de parsing. Une valeur démesurée donne un aperçu réduit ou indisponible, jamais un crash ou une allocation illimitée.
- Des données, jamais du code. Les métadonnées stockées ne contiennent aucune instruction exécutable ; les assets n'exécutent jamais de script.
- Capabilities minimales. Capabilities Tauri minimales, CSP stricte, navigation externe non sollicitée désactivée.
- Pas de télémétrie ni de crash reporter distant. Les journaux ne contiennent jamais le contenu des fichiers ; les rapports partagés masquent les chemins personnels.
- Mises à jour optionnelles. Toute future mise à jour en ligne est opt-in, documentée et vérifiée cryptographiquement.
Vérifications bloquantes pour une release¶
| ID | Vérification | Attendu |
|---|---|---|
| QA-SEC-01 | URI glTF ../../../private.txt |
Accès refusé |
| QA-SEC-02 | Symlink dans une racine vers un dossier privé | Non suivi |
| QA-SEC-03 | Appel IPC avec un ID d'asset inconnu ou une bibliothèque non autorisée | Refusé |
| QA-SEC-04 | Fichier malveillant ou tronqué | Pas d'exécution, pas de crash irrécupérable, budgets respectés |
| QA-SEC-05 | JavaScript ou URL distante dans des métadonnées | Aucune navigation ni accès réseau silencieux |
| QA-SEC-06 | Journal de diagnostic exporté | Ni contenu d'asset ni secret, chemins personnels minimisés |
| QA-PRIV-01 | Exécution sans réseau | Tous les parcours MVP fonctionnent |
| QA-PRIV-02 | Surveillance réseau pendant import et consultation | Aucune donnée utilisateur sortante |
| QA-PRIV-03 | Supprimer un tag ou une collection | Hash de tous les originaux inchangé |
| QA-PRIV-04 | Scanner un dossier en lecture seule | Résultat correct, aucune tentative d'écriture |
Tout échec ici bloque une release publique tant qu'il n'est pas corrigé ou que la fonction vulnérable n'est pas désactivée de façon sûre.
Signalement¶
Voir la politique de sécurité. Ne jamais signaler une vulnérabilité dans une issue publique.