Ne pas ouvrir publiquement une vulnérabilité exploitable avant qu’un correctif ne soit disponible. Lorsque le dépôt public propose le signalement privé de vulnérabilité GitHub, utiliser ce canal en priorité ; sinon contacter le propriétaire par un canal privé approprié. Fournir : version, Thunderbird/OS, étapes, impact, journaux expurgés et éventuel correctif. Ne jamais joindre de messages, profil ou base utilisateur non expurgés.
MailPin est local, sans serveur et sans rôle administrateur. L’extension utilise
Manifest V3 et une API Experiment privilégiée pour about:3pane, les messages,
SQLite et Agenda. Voir docs/SECURITY_BOUNDARY.md.
- permissions minimales :
menusuniquement ; - CSP locale sans réseau, code distant, objets, framing ou formulaires externes ;
- aucune dépendance d’exécution tierce, télémétrie, publicité ou secret ;
- DOM construit avec
textContent, sansevalni injection HTML ; - objets API et imports bornés, normalisés et protégés contre les clés dangereuses ;
- imports rendus inertes avant activation manuelle des automatismes ;
- chemin de sauvegarde modifiable uniquement via le sélecteur natif ;
- SQLite en WAL, transactions, écritures sérialisées et récupération atomique ;
- confirmation des opérations destructives depuis l’interface ;
- règles bornées, limitées en débit et protégées contre les boucles ;
- diagnostics expurgés et absence de contenu de message stocké ;
- fermeture du stockage avant purge complète lors de la désinstallation ;
- sentinelle d’installation effacée par le stockage natif Gecko afin qu’une réinstallation purge les résidus avant toute initialisation ;
- tests interdisant les compteurs natifs parallèles et les rôles admin client ;
- CI sans installation Python tierce, actions GitHub épinglées par SHA et identifiants de checkout non persistés ;
- synchronisation tags facultative, sans permission supplémentaire, avec propriété stricte clé+libellé et nettoyage limité aux tags MailPin.
Le propriétaire local d’un profil peut utiliser la Boîte à outils privilégiée et
appeler les commandes de sa propre extension. Un faux contrôle admin côté
client serait contournable et n’est donc pas utilisé. La sécurité repose sur la
validation au niveau Experiment, une liste d’actions fermée, l’absence de chemins
ou code arbitraires et des confirmations UX. Un attaquant ayant déjà le contrôle
du système ou du profil est hors du modèle de menace.
npm run check
npm test
npm run build
npm run ciLe rapport de sécurité de la source et release publique courantes est docs/reports/security/SECURITY_AUDIT_1.7.5.md. La release publique v1.7.5 cible 2384ee52df95a711424dfeb817ef114888634ed0. Les preuves de publication et de soumission ATN sont consignées dans STORE_RELEASE.md et release/ATN_SUBMISSION_1.7.5.md.
Les contrôles statiques ne prouvent pas toutes les interactions XUL privilégiées. Toute version destinée au store doit être testée sur les versions Thunderbird annoncées et relue humainement après toute modification de permission, API Experiment, stockage, import, Agenda ou désinstallation.