Analyse sécurité - Arylmera/DevWeb_Projet GitHub Wiki

Biens à protéger

Infrastructures

  • Serveur Web (Firebase)
  • Serveur API et BDD (VPS)
  • SGBD (MySQL)

Données

  • Code Front-End (Angular)
  • Code API (Node.js)
  • Base de données

Vulnérabilités

Infrastructures

Serveur Web

Le code font-end est hébergé sur Firebase (Services Google). Il ne devrait pas avoir de problème de sécurité mais nous n'avons aucun contrôle dessus.

Serveur API et base de données

Les deux services back-end sont hébergés sur des vps du cours d'Admin. Les vulnérabilités (ports, accès, etc.) sont donc nombreuses étant donné que nous apprenons la sécurité.

SGBD

Pour le SGBD nous utilisons MySQL. À ce stade du projet la sécurité du SGBD est plus que minimale. Utilisation du user root, mot de passe faible. Nous n'avons pas encore vu comment sécuriser les communications.

Données

Code front-end

Les principales vulnérabilités sont la gestion de la sécurité des comptes et les attaques par injection de code.

Code API

La sécurité des interactions avec l'API n'est pas gérée (gestion des accès à l'API). Cela rend d'autant plus les informations de la base de données vulnérables.

Base de données

Les données sont des informations publiques, il n'y a pas forcément de sécurité à avoir pour protéger l'accès aux informations. Néanmoins, les interactions de modification des données et de leur structure ne sont pas sécurisées à cause du manque de sécurité sur les services qui l'appellent.

Risques associés

Infrastructures

Étant donné les vulnérabilités de sécurité d'accès aux serveurs vps, on risque un piratage des serveurs et/ou des services hébergés. Cela entraîne une menace de la disponibilité des serveurs répercutant directement la qualité de service de notre site Web et de ses fonctionnalités. Pour le serveur Web, on pourrait avoir des problèmes inattendues.

Données

Les vulnérabilités de programmation dans les différents services menacent l'intégrité des données et de la structure de la base de données.

Classement des menaces

  1. Sécurité de l'API.
  2. Sécurité des vps.
  3. Sécurité de la base de données.
  4. Sécurité des programmes.
  5. Hébergement du serveur Web.

Contre-mesures

Communications sécurisées

Les Certificats SSL sont déjà "installés" sur le serveur de l'API ainsi que sur les serveurs Web.

Cross-Origin Resource Sharing (CORS)

Le partage des ressources entre origines multiples consiste à ajouter des en-têtes aux requêtes HTTP afin de permettre à un utilisateur d'accéder à des ressources d'un serveur par un autre serveur. Ou encore d'injecter du code HTML dans un site Web et avoir un impact autant sur la page Web, que sur sa base de données ou l'hébergeur.

L'API CORS est implémenté dans tout moteur de recherche majeur et possède notamment deux en-têtes principales :

  1. Access-Control-Allow-Origin : celui-ci permet d’indiquer au navigateur les domaines autorisés à recevoir une réponse du serveur.
  2. Access-Control-Allow-Credentials : cet en-tête indique si les cookies doivent être transmis ou non dans la réponse.

Système d'authentification pour l'API

Il faudrait installer une authentification pour l'API.

Sécurité de la base de données

Rendre inaccessible la base de données depuis l'extérieur et mettre en place une meilleure gestion des users -> ne plus utiliser le root, créer des users avec plus ou moins de privilèges.

Mise en oeuvre des contres-mesures

Base de données

Mise en place d'un utilisateur 'api' sur la base de données de la solution qui n'a de de droit que sur cette base de données. En effet, nous n'avons pas besoin d'autres utilisateur vu que la base de données n'est utilisé que par l'api qui a besoin de tous les droits.

API

Mise en place d'une sécurité par clé 'maison'. Pour pour faire une requête sur l'API, il faut posséder la clé secrète et la renseigner dans les paramètres de requête avec le bon nom de paramètre. Un middleware est lancé à chaque requête pour vérifier la clé. L'API renvoie une réponse 401 dans le cas ou la clé est erronée ou inexistante.

Cross-Origin Resource Sharing (CORS)

Mise en place du CORS automatique au même titre que les autres sécurisées web par le hosting Firebase.

Documentations des risques

Base de données

Top 10 des risques de sécurité sur les base de données

API

Sécurité API

Cross-Origin Resource Sharing (CORS)

Maintenance

Site web FireBase

En ce qui concerne la maintenance du site web en lui même, ceci est majoritairement pris en charge par Fireabase. Le maintient de ce service n'est pas de notre ressort, et google nous garantis la disponibilité de notre site. Pour une maintenance des fichiers interne, un simple re déploiement avec la commande ng deploy permet de mettre l'entièreté du site a jour (voir section installation).

De plus, le redéploiement du site ne coupe pas la disponibilité de celui-ci. Durant tout le processus automatique de redéploiement le site reste disponible pour les utilisateurs et la transition ce fait lors du chargement d'une page.

API et base de données

pour ces deux services, il est aisé de pouvoir les réinstaller (fichiers de back-up, simplicité des services et de déploiement) et vu la simplicité du code on peut améliorer la sécurité des deux services facilement. Lecture des logs sur les VPS.