flawopen.com/xss/C-cpp

● CWE-79 · Haute
Recherche · FlawOpen

Cross-Site Scripting in C/C++

Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in C and C++. Side-by-side vulnerable vs secure code examples for contextual entity escaping in CGI / Crow web services.

💡 Explication en Langage Simple (ELI5)

Imaginez coller une note sur le panneau d'affichage du hall disant : 'Toute personne lisant ceci doit donner son portefeuille à la personne à côté d'elle'. Si les visiteurs obéissaient aveuglément à chaque note punaisée, n'importe qui pourrait voler l'argent de tout le monde.

Concepts Clés et Termes

Web Application Security
Composant d'architecture clé affecté par CWE-79.
CWE-79
Classification standard Common Weakness Enumeration (CWE) pour xss-c-cpp.
Defense-in-Depth
Vérification d'ingénierie multicouche et isolation des limites à l'exécution.

Déroulement de l'Attaque Étape par Étape

Step 1

Injection de Payload Script Non Fiable

L'attaquant soumet des balises HTML ou des scripts JavaScript (ex. <script> ou <img onerror=...>) via des formulaires ou paramètres.

Step 2

Interpolation Sans Échappement Contextuel

L'application injecte l'entrée brute dans la réponse HTML sans encodage adéquat des entités HTML.

Step 3

Exécution dans le DOM du Navigateur

Lorsque la victime charge la page, son navigateur interprète le texte comme du code exécutable plutôt que du texte brut.

Step 4

Détournement de Session et Vol de Jetons

Le script malveillant s'exécute dans le contexte de la victime et vole les cookies d'authentification ou les jetons de session.

Code Source : Vulnérable vs Sécurisé

✕ IMPLÉMENTATION VULNÉRABLE
/* comment text written with no encoding */
fprintf(response,
  "<div>%s</div>", comment_text);
✓ PATCH SÉCURISÉ ET ROBUSTE
/* encode before insertion */
char *encoded = html_encode(comment_text);
fprintf(response,
  "<div>%s</div>", encoded);
free(encoded);

Liste de Contrôle de Sécurité pour l'Ingénierie

References