flawopen.com/xss/Kotlin

● CWE-79 · Haute
Recherche · FlawOpen

Cross-Site Scripting in Kotlin

Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in Kotlin. Side-by-side vulnerable vs secure code examples for Ktor HTML DSL and Thymeleaf template escaping.

💡 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-kotlin.
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
// untrusted HTML loaded with JS + native bridge
webView.settings.javaScriptEnabled = true
webView.addJavascriptInterface(
  NativeBridge(), "Android"
)
webView.loadData(untrustedHtml,
  "text/html", "UTF-8")
✓ PATCH SÉCURISÉ ET ROBUSTE
// sanitize first; avoid exposing a bridge
val safeHtml = sanitize(untrustedHtml)
webView.settings.javaScriptEnabled = false
webView.loadData(safeHtml,
  "text/html", "UTF-8")

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

References