La sécurité dans les extensions Webs

A51a19db1e861ad9e007de8a955d5141?s=47 hellosct1
November 08, 2019

La sécurité dans les extensions Webs

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

A51a19db1e861ad9e007de8a955d5141?s=128

hellosct1

November 08, 2019
Tweet

Transcript

  1. @hellosct1 @hellosct1@mamot.fr Christophe Villeneuve La sécurité dans les Extensions Web

    DevOps Tahiti – 8 novembre 2019
  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/
  4. DevOps Tahiti - @hellosct1 - Cycle de développement

  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
  11. Intégration Continue Déploiement Continu

  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
  16. DevOps Tahiti - @hellosct1 - Allez plus loin ! •

    MDN WebExtensions – https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions • Exemple WebExtensions – https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/Exemples • Construire une extension sécurisé – https://extensionworkshop.com/documentation/develop/build-a-secure-extension/ • WebExtension Toolbox – https://github.com/webextension-toolbox •
  17. DevOps Tahiti - @hellosct1 - Merci Christophe Villeneuve @hellosct1 @hellosct1@mamot.fr