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. 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/
  2. 5.

    DevOps Tahiti - @hellosct1 - Bienvenue WebExtensions • Créer une

    API robuste • Parité avec extensions Chrome API • Compatibilité → Compatibilité Qtwebkit & • Technologie Standard • Versioning
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 15.

    Station CI • Jenkins / Travis CI / Bamboo /

    GitLab CI / … • Tests – Sécurité – Javascript – Code – Etc.. • Configuration suivant les navigateurs
  10. 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 •