Skip to content

About

Ce qu'il contient : Tableau d'audit OWASP complet avec les 8 vulnérabilités + criticités Note de mise à jour vers OWASP 2025 (tu montres que tu es à jour) Priorisation des 3 risques critiques en format visuel.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

🔐 Tokenybet — Partie 3 : Audit OWASP Top 10

Simulation Betclic · DevSecOps Portfolio
Framework : OWASP Top 10 (2021) appliqué à une plateforme de paris sportifs en tokens
Durée estimée : 15 min · Contexte : Portfolio alternance Bachelor Systèmes & Réseaux, Cloud & Cybersécurité


🗂️ Structure du repo

tokenybet-owasp-audit/
├── README.md                        ← ce fichier
├── partie-1-architecture/           ← Stack technique & schéma infra
├── partie-2-backend-frontend/       ← .NET / Kotlin / React / MongoDB
└── partie-3-owasp-audit/
    ├── README.md                    ← rapport d'audit complet
    ├── owasp-matrix.md              ← matrice de risques
    └── remediation/
        ├── A01-access-control.cs    ← correctif JWT .NET
        ├── A05-api-gateway.yaml     ← Cognito Authorizer AWS SAM
        ├── A07-waf-throttling.json  ← règle AWS WAF rate limiting
        └── A09-audit-trail.py       ← DynamoDB append-only logging

🎯 Contexte du projet

Tokenybet est une application fictive de paris sportifs basée sur un système de tokens numériques, conçue dans le cadre d'une simulation DevSecOps inspirée de l'environnement Betclic.

Elle s'appuie sur :

  • Un backend .NET C# et Kotlin
  • Un frontend React / Redux / TypeScript
  • Une base de données MongoDB Atlas (cluster AWS Paris)
  • Une infrastructure serverless AWS Lambda + API Gateway
  • Une authentification JWT (partiellement implémentée — vulnérabilités identifiées)

Cet audit applique le référentiel OWASP Top 10 (2021) pour identifier, évaluer et prioriser les vulnérabilités de sécurité applicative, avec des recommandations alignées sur les exigences réglementaires de l'ANJ (Autorité Nationale des Jeux).


🔍 Résultats de l'audit — OWASP Top 10 (2021)

# Risque OWASP Vulnérabilité dans Tokenybet Criticité Mesure corrective
A01 Broken Access Control Un joueur peut POST /api/bets avec le userId d'un autre joueur 🔴 Critique Valider que userId payload = claim JWT côté serveur
A02 Cryptographic Failures Solde de tokens stocké en clair dans localStorage (Base64) 🔴 Critique Stockage côté serveur uniquement · TLS obligatoire
A03 Injection Champ minute du pari → injection SQL si non paramétré 🟠 Haute EF Core parameterized queries .NET / JPA côté Kotlin
A05 Security Misconfiguration API Lambda sans auth — API Gateway sans Authorizer 🔴 Critique AWS Cognito Authorizer ou API Key sur API Gateway
A06 Vulnerable Components Dépendances npm React non auditées 🟡 Moyenne npm audit fix en pipeline CI/CD
A07 Authentication Failures Pas de rate limiting sur /api/bets → brute force de tokens 🔴 Critique AWS WAF + throttling API Gateway (100 req/min/IP)
A09 Security Logging Failures Aucun log d'audit sur les transactions de tokens 🟠 Haute CloudWatch structured logging + DynamoDB audit trail
A10 SSRF Ghost Bet Heatmap appelle des URLs externes non validées 🟡 Moyenne Whitelist stricte des endpoints autorisés

ℹ️ Mise à jour OWASP 2025 — La version publiée fin 2025 fait monter la Security Misconfiguration en A02 et introduit les Software Supply Chain Failures en A03. La SSRF est absorbée dans A01. Cet audit est basé sur la version 2021 ; les priorités identifiées restent valides et sont renforcées par la nouvelle édition.


🚨 Priorisation — Top 3 risques critiques

┌─────────────────────────────────────────────────────────────────┐
│  PRIORITÉ 1 — A05 : API Lambda sans authentification            │
│  Porte ouverte publique sur toutes les transactions             │
│  ✅ Fix : Cognito Authorizer sur API Gateway — 15 min           │
├─────────────────────────────────────────────────────────────────┤
│  PRIORITÉ 2 — A07 : Absence de rate limiting                    │
│  Un bot peut inonder /api/bets de faux paris                    │
│  ✅ Fix : AWS WAF · règle throttling 100 req/min/IP             │
├─────────────────────────────────────────────────────────────────┤
│  PRIORITÉ 3 — A01 : Broken Access Control                       │
│  Usurpation d'identité joueur via userId falsifié               │
│  ✅ Fix : validation JWT systématique côté serveur              │
└─────────────────────────────────────────────────────────────────┘

📋 Rapport GRC — Synthèse 3 lignes

"Sur Tokenybet, j'ai mené un audit OWASP Top 10. Les risques prioritaires sont A01 (contrôle d'accès brisé sur les paris), A05 (API Lambda non authentifiée), et A07 (absence de rate limiting — un bot pourrait inonder le système de faux paris). Je recommande en priorité : JWT côté API Gateway AWS, WAF avec règle de throttling, et un audit trail DynamoDB pour la traçabilité réglementaire ANJ."


🛠️ Correctifs — Extraits de code

A01 — Broken Access Control

// ❌ Vulnérable : userId vient du payload, non vérifié
[HttpPost("/api/bets")]
public IActionResult PlaceBet(BetRequest request) { ... }

// ✅ Corrigé : userId extrait du token JWT, non falsifiable
[HttpPost("/api/bets")]
[Authorize]
public IActionResult PlaceBet(BetRequest request) {
    var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
    if (userId != request.UserId) return Forbid();
    // suite du traitement...
}

A05 — Security Misconfiguration (API Gateway)

# AWS SAM — ajout Cognito Authorizer
ApiGateway:
  Type: AWS::Serverless::Api
  Properties:
    Auth:
      DefaultAuthorizer: CognitoAuthorizer
      Authorizers:
        CognitoAuthorizer:
          UserPoolArn: !GetAtt UserPool.Arn

A07 — Rate Limiting (AWS WAF)

{
  "Name": "RateLimitBets",
  "Priority": 1,
  "Action": { "Block": {} },
  "Statement": {
    "RateBasedStatement": {
      "Limit": 100,
      "AggregateKeyType": "IP"
    }
  }
}

A09 — Audit Trail DynamoDB

import boto3, uuid, datetime

def log_bet_transaction(user_id, bet_id, amount, action):
    table = boto3.resource('dynamodb').Table('tokenybet-audit-trail')
    table.put_item(Item={
        'eventId': str(uuid.uuid4()),
        'timestamp': datetime.datetime.utcnow().isoformat(),
        'userId': user_id,
        'betId': bet_id,
        'amount': amount,
        'action': action,  # 'BET_PLACED', 'BET_CANCELLED'...
        'source': 'API_GATEWAY'
    })

🏛️ Conformité réglementaire — ANJ

L'Autorité Nationale des Jeux impose aux opérateurs agréés en France :

Exigence ANJ Vulnérabilité concernée Statut
Traçabilité complète des transactions A09 — Absence d'audit trail ❌ Non conforme
Authentification des accès opérateurs A05 — API sans auth ❌ Non conforme
Protection contre la fraude et l'usurpation A01 — Broken Access Control ❌ Non conforme
Protection des joueurs vulnérables (Betclic Protect) A07 — Absence de rate limiting ⚠️ Risque partiel

Sans les correctifs identifiés, Tokenybet serait non conforme ANJ et ne pourrait pas obtenir d'agrément opérateur en France.


📊 Matrice de risques

              PROBABILITÉ
              Faible        Moyenne       Haute
            ┌─────────────┬─────────────┬─────────────┐
  Haute     │             │  A03 · A09  │ A01 · A05   │
  Impact    │             │             │     A07      │
            ├─────────────┼─────────────┼─────────────┤
  Moyen     │             │     A02     │             │
            ├─────────────┼─────────────┼─────────────┤
  Faible    │             │ A06 · A10   │             │
            └─────────────┴─────────────┴─────────────┘

🔗 Références


👩‍💻 Auteure

Li-Lise R. — Étudiante Bachelor Systèmes & Réseaux, Cloud & Cybersécurité
Sup de Vinci Bordeaux · Recherche alternance septembre 2026
Domaines cibles : DevSecOps · FinTech · Secteur bancaire · ESN

GitHub Repo


Simulation DevSecOps · Inspiration : environnement technique Betclic Group · Bordeaux
Données et scénarios entièrement fictifs — usage portfolio uniquement

About

Ce qu'il contient : Tableau d'audit OWASP complet avec les 8 vulnérabilités + criticités Note de mise à jour vers OWASP 2025 (tu montres que tu es à jour) Priorisation des 3 risques critiques en format visuel.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors