SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
@hellosct1
@hellosct1@mamot.fr
Christophe Villeneuve
La sécurité dans les Extensions Web
DevOps Tahiti – 8 novembre 2019
DevOps Tahiti - @hellosct1 -
Aujourd’hui
●
Cycle de développement
●
DevOps
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/
DevOps Tahiti - @hellosct1 -
Cycle de développement
DevOps Tahiti - @hellosct1 -
Bienvenue WebExtensions
●
Créer une API robuste
●
Parité avec extensions Chrome API
●
Compatibilité
→ Compatibilité Qtwebkit &
●
Technologie Standard 
●
Versioning
DevOps Tahiti - @hellosct1 -
Flux d’une WebExtension
https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/Firefox_workflow_overview
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
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
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
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
Intégration Continue
Déploiement Continu
DevOps Tahiti - @hellosct1 -
Architecture
Station
DEV
Station
CI
Livraison
Tests
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
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
Station CI
●
Jenkins / Travis CI / Bamboo / GitLab CI / …
●
Tests
– Sécurité
– Javascript
– Code
– Etc..
●
Configuration suivant les navigateurs
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
●
DevOps Tahiti - @hellosct1 -
Merci
Christophe Villeneuve
@hellosct1
@hellosct1@mamot.fr

Weitere ähnliche Inhalte

Ähnlich wie La sécurité dans les extensions Webs

La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le designChristophe Villeneuve
 
WebExtensions : Où en est-on ? /// Where we are ?
WebExtensions : Où en est-on ? /// Where we are ?WebExtensions : Où en est-on ? /// Where we are ?
WebExtensions : Où en est-on ? /// Where we are ?Christophe Villeneuve
 
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Publicis Sapient Engineering
 
Industrialisation bar camp2010
Industrialisation bar camp2010Industrialisation bar camp2010
Industrialisation bar camp2010Lushkah911
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !vincent aniort
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFSDenis Voituron
 
Python dans le cloud avec Windows Azure
Python dans le cloud avec Windows AzurePython dans le cloud avec Windows Azure
Python dans le cloud avec Windows AzureMicrosoft
 
Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018Denis Voituron
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsChristophe Villeneuve
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec OdooHassan WAHSISS
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
 
WebExtensions - it's now / c'est maintenant
WebExtensions - it's now / c'est maintenantWebExtensions - it's now / c'est maintenant
WebExtensions - it's now / c'est maintenantChristophe Villeneuve
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 
Les écrans animés dans les navigateurs
Les écrans animés dans les navigateursLes écrans animés dans les navigateurs
Les écrans animés dans les navigateursChristophe Villeneuve
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Xavier Lacot
 

Ähnlich wie La sécurité dans les extensions Webs (20)

La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le design
 
Introduction webextensions
Introduction webextensionsIntroduction webextensions
Introduction webextensions
 
WebExtensions : Où en est-on ? /// Where we are ?
WebExtensions : Où en est-on ? /// Where we are ?WebExtensions : Où en est-on ? /// Where we are ?
WebExtensions : Où en est-on ? /// Where we are ?
 
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
 
Industrialisation bar camp2010
Industrialisation bar camp2010Industrialisation bar camp2010
Industrialisation bar camp2010
 
Controler vos donnees dans le web
Controler vos donnees dans le webControler vos donnees dans le web
Controler vos donnees dans le web
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFS
 
Python dans le cloud avec Windows Azure
Python dans le cloud avec Windows AzurePython dans le cloud avec Windows Azure
Python dans le cloud avec Windows Azure
 
iGraal et les webextensions
iGraal et les webextensionsiGraal et les webextensions
iGraal et les webextensions
 
Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018
 
la boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtoolsla boite à outils de développements dans firefox devtools
la boite à outils de développements dans firefox devtools
 
Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
WebExtensions - it's now / c'est maintenant
WebExtensions - it's now / c'est maintenantWebExtensions - it's now / c'est maintenant
WebExtensions - it's now / c'est maintenant
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Les écrans animés dans les navigateurs
Les écrans animés dans les navigateursLes écrans animés dans les navigateurs
Les écrans animés dans les navigateurs
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
 

Mehr von Christophe Villeneuve

La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxChristophe Villeneuve
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webChristophe Villeneuve
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteChristophe Villeneuve
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Christophe Villeneuve
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activitesChristophe Villeneuve
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftChristophe Villeneuve
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthnChristophe Villeneuve
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueChristophe Villeneuve
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsChristophe Villeneuve
 

Mehr von Christophe Villeneuve (20)

MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
La boîte à outils de développements dans Firefox
La boîte à outils de développements dans FirefoxLa boîte à outils de développements dans Firefox
La boîte à outils de développements dans Firefox
 
pister les pisteurs
pister les pisteurspister les pisteurs
pister les pisteurs
 
controler vos donnees éthiques dans le web
controler vos donnees éthiques dans le webcontroler vos donnees éthiques dans le web
controler vos donnees éthiques dans le web
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnante
 
Pentest bus pirate
Pentest bus piratePentest bus pirate
Pentest bus pirate
 
Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?Peur de la migration vers l’open source ?
Peur de la migration vers l’open source ?
 
Foxfooding semaine 3
Foxfooding semaine 3Foxfooding semaine 3
Foxfooding semaine 3
 
Foxfooding
FoxfoodingFoxfooding
Foxfooding
 
Accessibilite web wcag rgaa
Accessibilite web wcag rgaaAccessibilite web wcag rgaa
Accessibilite web wcag rgaa
 
Mozilla french speaking community activites
Mozilla french speaking community activitesMozilla french speaking community activites
Mozilla french speaking community activites
 
Monitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et MicrosoftMonitoring dynamique : Grafana et Microsoft
Monitoring dynamique : Grafana et Microsoft
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthn
 
Send large files with addons
Send large files with addonsSend large files with addons
Send large files with addons
 
Tests d'accessibilite par la pratique
Tests d'accessibilite par la pratiqueTests d'accessibilite par la pratique
Tests d'accessibilite par la pratique
 
Donnez la voix aux machines
Donnez la voix aux machinesDonnez la voix aux machines
Donnez la voix aux machines
 
La réalité mélangée dans vos applications
La réalité mélangée dans vos applicationsLa réalité mélangée dans vos applications
La réalité mélangée dans vos applications
 

La sécurité dans les extensions Webs

  • 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
  • 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