# TP - Métrologie appliquée à la sécurité ## Objectifs - En fonction de scénarios d'attaque identifiés dans une application Web, proposer et implémenter des métriques permettant de détecter ceux ci. ## Contexte et contraintes Soit une application simpliste de "trading" de cryptomonnaie fictive FakeCoin© et les scénarios d'attaque ci dessous: 1. Implémenter l'API en NodeJS 2. Identifier et proposer des métriques pour détecter les scénarios d'attaque 3. Mettre en place les sondes dans l'application et proposer des requêtes avec leur seuil de déclenchement pour l'émission d'alertes. ### API de l'application - **URL** `GET /wallet` **Données retournées** Total de FakeCoins présents dans le portefeuille de l'utilisateur. - **URL** `POST /sell` **Paramètres** `amount` Nombre de FakeCoins à vendre (à retirer du portefeuille) **Données retournées** Total de FakeCoins vendus, si la vente a réussie. **Contraintes** - On ne peut pas vendre plus de FakeCoins que l'on en possède dans son portefeuille. - **URL** `POST /buy` **Paramètres** `amount` Nombre de FakeCoins à acheter (à ajouter au portefeuille) ### Scénarios d'attaque 1. **Vol de compte** Un attaquant a réussi à obtenir les identifiants d'accès au compte d'un utilisateur et tente d'effectuer des ordres de ventes depuis une **autre adresse IP**. 2. **Tentative d'abus sur le mécanisme de vente** Un utilisateur mal intentionné tente d'effectuer **un grand nombre d'ordres de vente** en parallèle afin d'exploiter une vulnérabilité sur l'application de la contrainte de vente. 3. **Tentative de blanchiment d'argent** Un utilisateur mal intentionné tente d'effectuer du blanchiment d'argent via la plateforme en lançant des ordres d'achat de FakeCoins avec **des montants anormalement hauts**. ## Ressources - [Documentation du projet Prometheus](https://prometheus.io/docs/introduction/overview/) - [Module ExpressJS - Framework de création d'application Web pour NodeJS](http://expressjs.com/en/starter/installing.html) - [Module PromClient - Module NodeJS "client" pour Prometheus](https://github.com/siimon/prom-client)