tarnish
tarnish est un outil d'analyse statique conçu pour aider les chercheurs dans les revues de sécurité des extensions Chrome. Il automatise une grande partie du travail de routine et vous aide à identifier rapidement les vulnérabilités de sécurité potentielles. Cet outil accompagne l'article de blog de recherche qui peut être consulté ici. Si vous ne voulez pas passer par la configuration, vous pouvez simplement utiliser l'outil à l'adresse https://thehackerblog.com/tarnish/.

Avis et notes concernant la version non polie
Il convient de noter qu'il s'agit d'une version non polie. C'est le même code source que celui déployé à l'adresse https://thehackerblog.com/tarnish/. À l'avenir, je pourrais le nettoyer et le rendre beaucoup plus facile à exécuter, mais je n'ai pas le temps pour le moment.
Pour le configurer, vous devrez comprendre comment :
- Configurer un bucket S3
- (si vous utilisez l'auto-scaling) Configurer ElasticBeanstalk
- Utiliser
docker-compose
- Configurer redis
La configuration est un peu complexe en raison de quelques objectifs de conception :
- Effectuer efficacement une analyse statique des extensions Chrome
- Passer automatiquement à l'échelle supérieure avec davantage d'instances en cas de charge de travail accrue, puis réduire.
- Fonctionner avec un budget serré (d'où l'utilisation d'ElasticBeanstalk avec des instances Spot).
Quelques notes rapides pour aider quelqu'un qui tente de configurer ceci :
tarnish utilise Python Celery pour l'analyse des extensions.
- La configuration de Python Celery utilise redis comme courtier (celui-ci devra être créé).
- Les workers qui traitent les tâches d'analyse d'extension s'exécutent sur des instances Spot AWS ElasticBeanstalk. Pour ceux qui ne sont pas familiers, les instances Spot sont essentiellement des enchères sur de la capacité de calcul inutilisée. Cela permet au service de fonctionner à très bas coût.
- Les workers nécessitent au moins une instance AWS
t2.medium pour fonctionner.
- Le frontend de
tarnish est simplement un ensemble de fichiers statiques qui est téléchargé vers un bucket S3 configuré comme hôte web statique.
Voir le docker-compose.yaml.example pour les configurations des variables d'environnement. Idéalement, vous exécuteriez ./start.sh et navigueriez vers le frontend statique pour mettre les choses en marche. Vous pouvez utiliser S3 pour le site statique ou simplement un serveur web statique simple comme python -m SimpleHTTPServer (vous devrez modifier les fichiers JavaScript pour que l'origine corresponde, etc.).
Fonctionnalités
Extrait toute extension Chrome à partir d'un lien fourni sur le Chrome Web Store.
- Visualiseur de
manifest.json : affiche simplement une version JSON formatée du manifeste de l'extension.
- Analyse d'empreinte : Détection des
web_accessible_resources et génération automatique de JavaScript pour l'empreinte des extensions Chrome.
- Analyse potentielle de détournement de clic : Détection des pages HTML d'extension avec la directive
web_accessible_resources activée. Celles-ci sont potentiellement vulnérables au détournement de clic selon l'objectif des pages.
- Visualiseur d'avertissement(s) de permission : affiche une liste de tous les avertissements de demande de permission Chrome qui seront affichés lors de la tentative d'installation de l'extension par un utilisateur.
- Fonction(s) dangereuse(s) : indique l'emplacement des fonctions dangereuses qui pourraient être exploitées par un attaquant (par exemple, des fonctions telles que innerHTML, chrome.tabs.executeScript).
- Point(s) d'entrée : indique où l'extension reçoit une entrée utilisateur/externe. Cela est utile pour comprendre la surface d'attaque d'une extension et rechercher des points potentiels pour envoyer des données malicieusement conçues à l'extension.
- Les scanners de Fonction(s) dangereuse(s) et de Point(s) d'entrée génèrent les alertes suivantes :
- Extrait de code pertinent et ligne ayant déclenché l'alerte.
- Description du problème.
- Un bouton « Afficher le fichier » pour visualiser le fichier source complet contenant le code.
- Le chemin du fichier alerté.
- L'URI complète de l'extension Chrome du fichier alerté.
- Le type de fichier, par exemple un script de page d'arrière-plan, un script de contenu, une action de navigateur, etc.
- Si la ligne vulnérable se trouve dans un fichier JavaScript, les chemins de toutes les pages où elle est incluse ainsi que le type de ces pages et leur statut
web_accessible_resource.
- Analyseur de la politique de sécurité du contenu (CSP) et vérificateur de contournement : met en évidence les faiblesses de la CSP de votre extension et révèle également les éventuels moyens de contourner votre CSP en raison de CDN autorisés, etc.