Les portefeuilles cryptographiques et les échanges cryptographiques peuvent souffrir d'attaques de pirates informatiques (ou de la stupidité des utilisateurs, des développeurs, ainsi que de problèmes avec la logique du système). Les tests pourraient aider à identifier les vulnérabilités et les problèmes dans la logique de l'application, cependant, je n'ai toujours pas trouvé de méthodologie formalisée dans laquelle il serait écrit ce à quoi il faudrait faire attention pendant les tests. Ayant testé une dizaine d'échanges et de portefeuilles, j'ai décidé de formaliser la procédure pour les tester, qui sont intéressés, bienvenue chez cat.
Lors des tests des échanges et des portefeuilles, j'ai attiré l'attention sur leur fonctionnement, et j'ai formulé les aspects de leurs tests ci-dessous sous la forme d'une petite technique, mais dans l'ordre.
Tout d'abord, vous devez comprendre ce qui est important pour le client? Il est important pour le client que l'argent de l'échange ou du portefeuille et la conservation des données personnelles des utilisateurs ne soient pas volés. Et puisque, en fait, chaque échange ou portefeuille, pour la plupart, est un site Web ou une application Web, le client souhaite effectuer une simulation d'une attaque de pirate, c'est-à-dire Test de la boîte noire (voir le tableau 1), mais pour l'exhaustivité des tests, le test de la boîte grise est plus souvent choisi (voir le tableau 1).
Pour tester la logique du travail, vous avez besoin d'une crypto-monnaie de test. Et comme chaque échange a ses propres restrictions sur le dépôt / retrait de fonds, le montant de la crypto-monnaie de test doit être au moins le minimum autorisé pour le retrait et devrait être suffisant pour effectuer au moins 5 transactions d'achat et de vente et / ou d'entrées-sorties.
Tableau 1. Types de tests en fonction des informations fournies.
Tapez | La description |
---|
Boîte noire | - les tests sont effectués sans impliquer l'équipe technique du client
|
Boîte grise | - contact avec l'équipe technique du client
- ajout de comptes testés dans la «liste blanche»
- le client fournit des fonds (pièces) pour les tests
|
Boîte blanche | - support client complet
- fournir le code source de l'application
- fourniture de journaux
- accorder l'accès à différents privilèges
- mise à disposition de fonds (pièces) du montant nécessaire aux tests
|
Chez Hacken, nous testons les vulnérabilités dans l'ordre suivant:- Étudier les informations accessibles au public.
- Vérification par des outils automatisés.
- Vérifiez en mode manuel.
- Rédaction du rapport.
Fonctionnalités de test des échanges cryptographiques et des portefeuilles cryptographiques1. Test de la vérification KYC - c'est une exigence de la plupart des échanges cryptographiques et des ICO.Cette section traite des tests de téléchargement de fichiers (photos ou captures d'écran de documents confirmant l'identité d'une personne).
- Vérification de la possibilité de télécharger des fichiers exécutables sur le serveur système
- Vérifiez la possibilité de vol de documents numérisés - noms de fichiers et répertoires à force brute.
- Vérification de l'accès non autorisé au système de fichiers du serveur.
2. Test des fonds d'entrée-sortie- Vérifier l'exactitude des chiffres d'arrondi lors du dépôt / retrait de fonds.
- Vérifier la substitution de l'adresse du portefeuille lors du dépôt / retrait de fonds (l'erreur la plus simple n'est pas de vérifier le portefeuille de l'expéditeur et du destinataire, mais elle est très critique).
- Vérification de la logique de travail lors du dépôt / retrait de fonds.
- Vérification du contournement de la confirmation de l'opération d'achat-vente (code d'authentification à deux facteurs, OTP, mot de passe spécial).
- Vérifiez les vulnérabilités de retrait des conditions de course.
- Vérifier la possibilité d'aller au-delà des limites d'entrée / sortie de fonds.
3. Test d'achat et de vente de crypto-monnaies (s'applique uniquement aux échanges)- Vérifier l'exactitude des chiffres d'arrondi lors de l'achat et de la vente de fonds.
- Vérification de la substitution de l'adresse lors de l'achat et de la vente.
- Vérifier la logique du travail lors de l'achat et de la vente de fonds.
- Vérification de la possibilité de substitution ou de modification d'un ordre de vente.
- Vérification du contournement de la confirmation de l'opération d'achat-vente (code d'authentification à deux facteurs, OTP, mot de passe spécial).
- Vérification de la possibilité de condition de course dans la mise en œuvre des opérations d'achat / vente.
- Vérifier la possibilité d'usurper les adresses de portefeuille.
Test des composants WebPart4. Test du processus d'enregistrement- Vérification du filtrage des paramètres entrants lors de l'enregistrement.
- Vérification de la fonctionnalité de confirmation de l'utilisateur.
- Vérification de la possibilité d'itérer sur les noms d'utilisateur, adresses e-mail et numéros de téléphone.
- Vérification de la possibilité de contourner le chèque captcha lors de l'inscription.
- Vérification des vulnérabilités et de la logique lors de la réinitialisation des mots de passe et de la modification des données.
5. Test du processus d'authentification- Vérifications du filtrage d'authentification.
- Vérification de la possibilité de sélectionner un nom d'utilisateur et un mot de passe pour un compte dans le dictionnaire (protection contre la force brute).
- Vérifiez le bypass, vérifiez le captcha.
- Vérification du contournement de l'authentification à deux facteurs
- Vérification de la possibilité de désactiver l'authentification à deux facteurs.
- Vérification des fuites de données lors de l'authentification.
6. Tester les cadres et les technologies qui ont été utilisés dans le développement de l'échangeLors des tests de vulnérabilités, il est nécessaire de déterminer les technologies et techniques (frameworks) avec lesquelles les échanges ont été développés. Ainsi, lorsque vous comprenez la technologie avec laquelle le portefeuille ou l'échange a été développé, vous pouvez trouver un exploit ou des vulnérabilités déjà découverts dans les sources ouvertes. Il est nécessaire de vérifier que toutes les bibliothèques, frameworks et logiciels tiers ne présentent pas de vulnérabilités publiquement disponibles au moment de la publication ou de la configuration correcte des systèmes de sécurité (par exemple, CloudFlare).
7. Test OWASPLa méthodologie OWASP contient une liste de contrôle qui examine tous les risques de sécurité possibles pour un site Web. Ainsi, une telle vérification vous permet d'identifier les vulnérabilités possibles (enfin, beaucoup plus dépend de la
franchise des mains de l' expérience et des compétences du testeur)
Le plus souvent trouvé:
- Vérification des paramètres de filtrage sur le back-end, car ils sont souvent vérifiés uniquement sur le front-end
- L'absence d'indicateurs de requête HTTP, ce qui n'est pas critique, mais peut conduire à la mise en cache des mots de passe ou à la possibilité d'une attaque par détournement de clic
- Manque de gestion de session: cela peut conduire au fait que lorsqu'un cookie est volé ou qu'un attaquant a un accès direct à un ordinateur ou un téléphone, les opérations d'un utilisateur valide peuvent être effectuées
- Versions vulnérables des services ouverts
- Utilisation de jetons Web JSON (JWT), avec des algorithmes de chiffrement faibles
8. Test de l'API- Vérifier les vulnérabilités de l'API en écrivant un module de programme pour interagir avec l'API et vérifier les éventuelles vulnérabilités logiques côté client et API.
- Utilisez Swagger pour visualiser la structure de la demande, il est nécessaire de comprendre ce qui doit être envoyé au serveur et ainsi vérifier la vulnérabilité de l'API.
9. Test des WebSocketsLogiciels couramment utilisés pour les tests:- Burpsuite
- Acunetix
- Zenmap
- Owasp zap
- Sqlmap
Et d'autres outils au besoin.
Conclusion:Dans cet article, j'ai essayé de formaliser et de structurer la méthodologie de test des échanges, que j'ai appliquée dans plus de 10 cas de tests d'échanges et de portefeuilles. Nous avons pris cette méthodologie comme principale méthodologie pour tester les échanges chez
Hacken . Aujourd'hui, l'industrie des technologies blockchain, des solutions décentralisées et des crypto-monnaies est au sommet de sa popularité. Les FAQ et les manuels sont dépassés beaucoup plus rapidement que la loi de Moore, donc l'article ne prétend pas être un manuel exceptionnel pour tester les échanges cryptographiques, il exprime uniquement l'expérience acquise lors de la répétition répétée de cette procédure.