Résumé de gestion
Tezos a contacté Sayfer Security afin d'effectuer un audit de sécurité sur Tezos MetaMask Snap en juin 2023.
Avant d'évaluer les services ci-dessus, nous avons organisé une réunion de lancement avec l'équipe technique de Tezos et avons reçu un aperçu du système et des objectifs de cette recherche.
Au cours de la période de recherche de 2 semaines, nous avons découvert 4 résultats dans le système.
En conclusion, plusieurs correctifs devraient être mis en œuvre suite au rapport, mais la posture de sécurité du système est compétente.
Vulnérabilités par risque
Haute – Menace directe sur les processus métier clés.
Moyenne – Menace indirecte sur les processus métier clés ou menace partielle sur les processus métier.
Faible – Aucune menace directe n'existe. La vulnérabilité peut être exploitée à l'aide d'autres vulnérabilités.
D'information – Cette constatation n'indique pas de vulnérabilité, mais énonce un commentaire qui signale des défauts de conception et une mise en œuvre incorrecte qui pourraient causer un problème à long terme.
Approche
Méthodologie d'évaluation de la sécurité
Sayfer utilise OWASP WSTG comme norme technique lors de l'examen des applications Web. Après avoir acquis une compréhension approfondie du système, nous avons décidé quels tests OWASP sont nécessaires pour évaluer le système.
Évaluation de sécurité
Après avoir compris et défini la portée, effectué une modélisation des menaces et évalué les tests corrects requis afin de vérifier complètement l'application pour les failles de sécurité, nous avons effectué notre évaluation de sécurité.
Description de la table de problématique
Titre du problème
ID | L'ID OWASP du problème. Les tests supplémentaires que nous effectuons et qui ne sont pas inclus dans le tableau OWASP porteront l'ID Sayfer. Exemple d'identifiant : WSTG-INFO-002 WSTG – Guide de test de sécurité Web. INFO – Un raccourci pour le sujet auquel appartient le problème. 002 - Numéro de série. |
Analyse | Représente le facteur de risque du problème. Pour une description plus détaillée, reportez-vous au Vulnérabilités par risque . |
Compétence requise | Décrit le niveau de compétence requis pour mener une exploitation réussie. Plus le niveau de compétence est bas, plus le processus d’exploitation est facile. |
OWASP Référence |
Un lien vers la page OWASP pertinente pour plus de connaissances. |
Localisation | L'URL dans laquelle ce problème a été détecté. Les problèmes sans localisation n'ont pas de localisation particulière et font référence au produit dans son ensemble. |
Outils | Les outils utilisés pour détecter le problème. |
Description
Nous fournissons ici une brève description du problème et de la manière dont il s'est formé, des étapes que nous avons suivies pour le trouver ou l'exploiter, ainsi que d'une preuve de concept (le cas échéant) et de la manière dont ce problème peut affecter le produit ou ses utilisateurs. .
Atténuation
Options de résolution suggérées pour ce problème et liens vers des sites conseillés pour des mesures correctives ultérieures.
Évaluation de la sécurité
Les tests suivants ont été effectués lors de l'audit du système
La collecte d'informations
La collecte d'informations | Nom du test |
WSTG-INFO-01 | Effectuer une reconnaissance de découverte de moteur de recherche pour les fuites d'informations |
WSTG-INFO-02 | Serveur Web d'empreintes digitales |
WSTG-INFO-03 | Examiner les métafichiers du serveur Web pour détecter les fuites d'informations |
WSTG-INFO-04 | Énumérer les applications sur le serveur Web |
WSTG-INFO-05 | Examiner le contenu de la page Web pour détecter les fuites d'informations |
WSTG-INFO-06 | Identifier les points d'entrée de l'application |
WSTG-INFO-07 | Mapper les chemins d'exécution via l'application |
WSTG-INFO-08 | Cadre d'application Web d'empreintes digitales |
WSTG-INFO-09 | Application Web d'empreintes digitales |
WSTG-INFO-10 | Architecture des applications cartographiques |
Configuration et déploiement des tests de gestion
Configuration et déploiement des tests de gestion | Nom du test |
WSTG-CONF-01 | Tester la configuration de l'infrastructure réseau |
WSTG-CONF-02 | Tester la configuration de la plate-forme d'application |
WSTG-CONF-03 | Tester la gestion des extensions de fichiers pour les informations sensibles |
WSTG-CONF-04 | Examiner l'ancienne sauvegarde et les fichiers non référencés pour les informations sensibles |
WSTG-CONF-05 | Énumérer les interfaces d'administration d'infrastructure et d'application |
WSTG-CONF-06 | Tester les méthodes HTTP |
WSTG-CONF-07 | Tester la sécurité du transport strict HTTP |
WSTG-CONF-08 | Tester la stratégie interdomaine RIA |
WSTG-CONF-09 | Autorisation de fichier de test |
WSTG-CONF-10 | Test de reprise de sous-domaine |
WSTG-CONF-11 | Tester le stockage en nuage |
Test de gestion des identités
Test de gestion des identités | Nom du test |
WSTG-IDNT-01 | Définitions des rôles de test |
WSTG-IDNT-02 | Tester le processus d'enregistrement des utilisateurs |
WSTG-IDNT-03 | Tester le processus de provisionnement de compte |
WSTG-IDNT-04 | Test d'énumération de compte et de compte d'utilisateur devinable |
WSTG-IDNT-05 | Test de la politique de nom d'utilisateur faible ou non appliquée |
Test d'authentification
Test d'authentification | Nom du test |
WSTG-ATHN-01 | Test des informations d'identification transportées sur un canal crypté |
WSTG-ATHN-02 | Test des informations d'identification par défaut |
WSTG-ATHN-03 | Test de mécanisme de verrouillage faible |
WSTG-ATHN-04 | Test de contournement du schéma d'authentification |
WSTG-ATHN-05 | Test de mémorisation du mot de passe vulnérable |
WSTG-ATHN-06 | Test des faiblesses du cache du navigateur |
WSTG-ATHN-07 | Test de la politique de mot de passe faible |
WSTG-ATHN-08 | Test de réponse à la question de sécurité faible |
WSTG-ATHN-09 | Test des fonctionnalités de modification ou de réinitialisation de mot de passe faibles |
WSTG-ATHN-10 | Test d'authentification plus faible dans un canal alternatif |
Test d'autorisation
Test d'autorisation | Nom du test |
WSTG-ATHZ-01 | Test de l'inclusion du fichier de traversée de répertoires |
WSTG-ATHZ-02 | Test du schéma d'autorisation de contournement |
WSTG-ATHZ-03 | Test d'élévation de privilèges |
WSTG-ATHZ-04 | Test des références d'objet directes non sécurisées |
Test de gestion de session
Test de gestion de session | Nom du test |
WSTG-SESS-01 | Test du schéma de gestion de session |
WSTG-SESS-02 | Test des attributs des cookies |
WSTG-SESS-03 | Test de fixation de session |
WSTG-SESS-04 | Test des variables de session exposées |
WSTG-SESS-05 | Test de falsification de requête intersite |
WSTG-SESS-06 | Test de la fonctionnalité de déconnexion |
WSTG-SESS-07 | Expiration de la session de test |
WSTG-SESS-08 | Test de Session Puzzling |
WSTG-SESS-09 | Test de piratage de session |
Test de validation des données
Test de validation des données | Nom du test |
WSTG-INPV-01 | Test des scripts intersites réfléchis |
WSTG-INPV-02 | Test des scripts intersites stockés |
WSTG-INPV-03 | Test de falsification de verbe HTTP |
WSTG-INPV-04 | Test de la pollution des paramètres HTTP |
WSTG-INPV-05 | Test d'injection SQL |
WSTG-INPV-06 | Test d'injection LDAP |
WSTG-INPV-07 | Test d'injection XML |
WSTG-INPV-08 | Test d'injection SSI |
WSTG-INPV-09 | Test d'injection XPath |
WSTG-INPV-10 | Test de l'injection SMTP IMAP |
WSTG-INPV-11 | Test d'injection de code |
WSTG-INPV-12 | Test d'injection de commande |
WSTG-INPV-13 | Test d'injection de chaîne de format |
WSTG-INPV-14 | Test de vulnérabilité incubée |
WSTG-INPV-15 | Test de contrebande de fractionnement HTTP |
WSTG-INPV-16 | Test des requêtes entrantes HTTP |
WSTG-INPV-17 | Test de l'injection d'en-tête d'hôte |
WSTG-INPV-18 | Test d'injection de modèle côté serveur |
WSTG-INPV-19 | Test de falsification de requête côté serveur |
La gestion des erreurs
La gestion des erreurs | Nom du test |
WSTG-ERRH-01 | Test de la gestion incorrecte des erreurs |
WSTG-ERRH-02 | Test des traces de pile |
Cryptographie
Cryptographie | Nom du test |
WSTG-CRYP-01 | Test de sécurité de la couche de transport faible |
WSTG-CRYP-02 | Test de rembourrage Oracle |
WSTG-CRYP-03 | Test des informations sensibles envoyées via des canaux non cryptés |
WSTG-CRYP-04 | Test de chiffrement faible |
Test de la logique métier
Test de la logique métier | Nom du test |
WSTG-BUSL-01 | Tester la validation des données de la logique métier |
WSTG-BUSL-02 | Tester la capacité à falsifier des requêtes |
WSTG-BUSL-03 | Vérifications de l'intégrité des tests |
WSTG-BUSL-04 | Tester la synchronisation du processus |
WSTG-BUSL-05 | Tester le nombre de fois qu'une fonction peut être utilisée Limites |
WSTG-BUSL-06 | Tests de contournement des flux de travail |
WSTG-BUSL-07 | Tester les défenses contre l'utilisation abusive des applications |
WSTG-BUSL-08 | Tester le téléchargement de types de fichiers inattendus |
WSTG-BUSL-09 | Tester le téléchargement de fichiers malveillants |
Test côté client
Test côté client | Nom du test |
WSTG-CLNT-01 | Test des scripts intersites basés sur DOM |
WSTG-CLNT-02 | Tester l'exécution de JavaScript |
WSTG-CLNT-03 | Test d'injection HTML |
WSTG-CLNT-04 | Test de la redirection d'URL côté client |
WSTG-CLNT-05 | Test d'injection CSS |
WSTG-CLNT-06 | Test de la manipulation des ressources côté client |
WSTG-CLNT-07 | Tester le partage des ressources entre les origines |
WSTG-CLNT-08 | Test du clignotement intersite |
WSTG-CLNT-09 | Tester le détournement de clic |
WSTG-CLNT-10 | Tester les WebSockets |
WSTG-CLNT-11 | Tester la messagerie Web |
WSTG-CLNT-12 | Test du stockage du navigateur |
WSTG-CLNT-13 | Test d'inclusion de scripts intersites |
Test d'API
Test d'API | Nom du test |
WSTG-APIT-01 | Tester GraphQL |
Commandez l'audit de Sayfer
Résultats de l'évaluation de la sécurité
Dépendances avec des vulnérabilités connues
ID | DIRE-01 |
Statut | Fixé |
Analyse | Faible |
Localisation | - |
Impact sur les entreprises | L’utilisation de versions vulnérables des modules de nœuds pourrait exposer le service à diverses attaques, certaines moins critiques, mais d’autres graves. |
Description
L'audit NPM renvoie plusieurs résultats pour les vulnérabilités connues dans les packages installés :
npm audit
# npm audit report
engine.io 5.1.0 - 6.4.1
Severity: moderate
engine.io Uncaught Exception vulnerability -
https://github.com/advisories/GHSA-q9mw-68c2-j6m5
fix available via `npm audit fix`
node_modules/engine.io
socket.io 4.1.0 - 4.6.0-alpha1
Depends on vulnerable versions of engine.io
node_modules/socket.io
gatsby 1.9.130 - 4.25.7 || 5.4.0-next.0 - 5.9.1
Depends on vulnerable versions of gatsby-cli
Depends on vulnerable versions of latest-version
Depends on vulnerable versions of socket.io
node_modules/gatsby
got <11.8.5
Severity: moderate
Got allows a redirect to a UNIX socket -
https://github.com/advisories/GHSA-pfrx-2q88-qq97
fix available via `npm audit fix`
node_modules/package-json/node_modules/got
package-json <=6.5.0
Depends on vulnerable versions of got
node_modules/package-json
latest-version 0.2.0 - 5.1.0
Depends on vulnerable versions of package-json
node_modules/latest-version
update-notifier 0.2.0 - 5.1.0
Depends on vulnerable versions of latest-version
node_modules/update-notifier
gatsby-cli 1.1.27 - 4.25.0
Depends on vulnerable versions of update-notifier
node_modules/gatsby-cli
13
request *
Severity: moderate
Server-Side Request Forgery in Request -
https://github.com/advisories/GHSA-p8p7-x288-28g6
fix available via `npm audit fix`
node_modules/request
node-gyp <=7.1.2
Depends on vulnerable versions of request
node_modules/@npmcli/run-script/node_modules/node-gyp
@npmcli/run-script 1.1.1 - 1.8.6
Depends on vulnerable versions of node-gyp
node_modules/@npmcli/run-script
@lavamoat/allow-scripts <=2.3.0
Depends on vulnerable versions of @npmcli/run-script
node_modules/@lavamoat/allow-scripts
socket.io-parser 4.0.4 - 4.2.2
Severity: high
Insufficient validation when decoding a Socket.IO packet -
https://github.com/advisories/GHSA-cqmj-92xf-r6r9
fix available via `npm audit fix`
node_modules/socket.io-parser
webpack 5.0.0 - 5.75.0
Severity: high
Cross-realm object access in Webpack 5 -
https://github.com/advisories/GHSA-hc6q-2mpp-qw7j
fix available via `npm audit fix`
node_modules/webpack
yaml 2.0.0-5 - 2.2.1
Severity: high
Uncaught Exception in yaml - https://github.com/advisories/GHSA-f9xv-q969-pqx4
fix available via `npm audit fix`
node_modules/yaml-loader/node_modules/yaml
Nous avons validé chacun d'eux pour nous assurer qu'il n'affecte pas la version de production, et avons constaté que même les plus graves n'ont pas d'effet direct sur Tezos Snap. Bien que cela signifie qu’il n’y a aucun risque de sécurité pour le moment, de nouvelles fonctionnalités ou de nouvelles vulnérabilités pourraient survenir à l’avenir.
Atténuation
La première étape serait de mettre à jour les packages vers les versions lorsque cela est possible. À un niveau plus large, il est nécessaire de disposer d'un système automatisé pour alerter des nouvelles vulnérabilités et un processus devrait être en place pour les atténuer lorsque des vulnérabilités critiques surviennent.
Numéros magiques
ID | DIRE-02 |
Statut | Fixé |
Analyse | D'information |
Localisation | - |
Impact sur les entreprises | Les nombres magiques ont un impact sur la lisibilité du code. Sans connaissance interne, ils semblent plutôt arbitraires. |
Description
Lors de notre évaluation, nous avons remarqué l’utilisation de constantes apparemment arbitraires sans commentaires explicatifs :
Dans le cas ci-dessus, il est difficile de deviner quelle est la raison de diviser par 1000 ou de multiplier par 257 sans savoir comment fonctionnent le protocole et la blockchain elle-même.
Atténuation
Il est considéré comme une bonne pratique de donner à ces constantes codées en dur des noms descriptifs et, si nécessaire, d'ajouter des commentaires explicatifs.
Invite de métamasque alarmante
ID | DIRE-03 |
Statut | Fixé |
Analyse | D'information |
Localisation | - |
Impact sur les entreprises | Ce type d'invite peut dissuader les utilisateurs d'installer Snap |
Description
Lors de l'installation de Snap, l'invite de métamasque suivante, difficile à comprendre, apparaît :
Atténuation
Il n’est peut-être pas possible pour Tezos de modifier cette invite plutôt effrayante. Cependant, comme cela peut être intéressant, nous avons décidé d'inclure cette question à titre informatif.
Invite de métamasque alarmante
ID | DIRE-04 |
Statut | Fixé |
Analyse | D'information |
Localisation | - |
Impact sur les entreprises | Aucun |
Description
Lors de notre évaluation, nous avons remarqué ce commentaire, impliquant une certaine incertitude, qui pourrait indiquer un problème sous-jacent plus important.
Nous avons enquêté et n'avons pas pu vérifier quel est le problème auquel le commentaire fait référence.
Atténuation
Ces commentaires doivent être modifiés ou supprimés dans la version finale, ou s'il y a un problème plus profond ici, les développeurs doivent mettre à jour la logique expliquant pourquoi cela
Annexe A : Correctifs d'évaluation de la sécurité
Après examen par l'équipe Sayfer, nous pouvons confirmer que toutes les vulnérabilités ont été corrigées par l'équipe Tezos.
Hachage de validation initial : 0e0d653b85cbd11365771ad9c2ee5726b10a7d26
Corrige le hachage de validation : 0d0c9381a1107c54647d927d4fe99694f332e24d