Présentation effectuée à Meetup Tahiti DevOps (8 novembre 2019) par Christophe Villeneuve sur "la sécurié dans les extensions webs".
Une occasion pour voir comment sécuriser les extensions webs (webExtensions) jusqu'à la validation et publication sur le site des addons de Mozilla
2. DevOps Tahiti - @hellosct1 -
Aujourd’hui
●
Cycle de développement
●
DevOps
3. DevOps Tahiti - @hellosct1 -
Audit « navigateurs sécurisés modernes » publiée par le BSI le mois dernier, en
septembre 2019.
Firefox fait un sans faute lors d'un audit réalisé par l'agence allemande de
sécurité informatique
Audit « navigateurs sécurisés modernes » publiée par le BSI le mois dernier, en
septembre 2019.
Firefox fait un sans faute lors d'un audit réalisé par l'agence allemande de
sécurité informatique
https://securite.developpez.com/actu/281305/Firefox-fait-un-sans-faute-lors-d-un-audit-realise-par-l-agence-allemande-de
-securite-informatique-qui-le-recommande-comme-etant-le-navigateur-le-plus-securise/
5. DevOps Tahiti - @hellosct1 -
Bienvenue WebExtensions
●
Créer une API robuste
●
Parité avec extensions Chrome API
●
Compatibilité
→ Compatibilité Qtwebkit &
●
Technologie Standard
●
Versioning
6. DevOps Tahiti - @hellosct1 -
Flux d’une WebExtension
https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/Firefox_workflow_overview
7. DevOps Tahiti - @hellosct1 -
Publication / Déploiement (1/2)
●
Mettre à jour les champs
– Version
– Description
– Permission
●
Compression XPI
https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension
Exemple : Console linux
$ cd path/to/my-extension/
$ zip -r -FS ../my-extension.zip * --exclude *.git*
$ mv my-extension.zip my-extension.xpi
Exemple : Console linux
$ cd path/to/my-extension/
$ zip -r -FS ../my-extension.zip * --exclude *.git*
$ mv my-extension.zip my-extension.xpi
8. DevOps Tahiti - @hellosct1 -
Publication / Déploiement (2/2)
●
Proposer un nouveau module
– https://addons.mozilla.org/fr/developers/addons/
●
Envoyer une nouvelle version
●
Résultat
9. DevOps Tahiti - @hellosct1 -
Tests généraux
●
Non respect
– Politique de sécurité du contenu
– Anomalie Permissions dans le manifest.json
→ ex : <all_html>
●
Mauvaises pratiques
– Eval() / InnerHTML / ...
– Code Javascript dans un document HTML
→ Non éxécuté
<script>console.log("toto");</script>
●
Erreurs dans la construction de fonctions
●
API non compatible
https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy
10. DevOps Tahiti - @hellosct1 -
Sécurité bonne pratique
●
Ne pas injecter ou incorporer des scripts distants
●
Assurez-vous d'insérer le contenu distant en toute sécurité
●
Utiliser XHR pour Google Analytics
●
Utiliser la stratégie de sécurité du contenu de l'extension standard (CSP)
●
Partagez des objets avec JavaScript sur la page avec soin
●
Utilisez window.eval() dans les scripts de contenu avec prudence
●
Créez votre interface utilisateur avec des composants d'extension
●
Ajouter eslint-plugin-no-unsanitized à ESLint
●
Ne pas injecter les chemins moz-extension directement
●
S'assurer que les bibliothèques tierces sont à jour
●
Ne pas modifier les bibliothèques tierces
https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/securite_bonne_pratique
12. DevOps Tahiti - @hellosct1 -
Architecture
Station
DEV
Station
CI
Livraison
Tests
13. DevOps Tahiti - @hellosct1 -
L’environnement
●
Adapter l’extension
●
l’API browser.runtime
https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime
– Obtenir les informations
●
Environnement, OS, architecture
– Communiquer entre les différents composants
●
Toolbox cross-browser
→ Pour le développement des WebExtensions
– https://github.com/webextension-toolbox/webextension-toolbox
14. DevOps Tahiti - @hellosct1 -
Outils de développement
●
Web-Ext
– nodejs/npm
●
Web-ext-webpack-plugin
●
API Polyfill
●
Dans le navigateur → about:debugging
●
Outil de traductions
●
Outil de Firefox pour Android
https://extensionworkshop.com/documentation/develop/browser-extension-development-tools
15. Station CI
●
Jenkins / Travis CI / Bamboo / GitLab CI / …
●
Tests
– Sécurité
– Javascript
– Code
– Etc..
●
Configuration suivant les navigateurs