
Avis détaillant une vulnérabilité XSS réfléchie dans PuneethReddyHC Event Management System v1.0, incluant une analyse d'impact, des étapes de reproduction et des recommandations d'atténuation.
Titre : Cross-Site Scripting (XSS) réfléchi via le paramètre event_id dans register.php
Fournisseur / Dépôt : PuneethReddyHC / event-management
Version concernée : 1.0 (branche/tag master au moment du test)
Signaleur : Hafiz Pradana Gemilang
Statut de divulgation : Fournisseur notifié en privé — PoC d'exploitation retenu pour la sécurité des utilisateurs.
Le statut et le calendrier seront mis à jour après coordination ou publication du correctif.
Une vulnérabilité de Cross-Site Scripting (XSS) réfléchi a été identifiée dans register.php, où le paramètre GET event_id n'est pas correctement assaini avant d'être reflété dans la sortie de la page.
Un attaquant distant peut créer une URL malveillante qui exécute du JavaScript arbitraire dans le navigateur de la victime dès qu'elle visite ou est redirigée vers le lien.
⚠️ Cet avis omet intentionnellement une charge utile d'exploitation active.
La preuve de concept complète a été fournie en privé au fournisseur pour le développement du correctif.
/register.php?event_id=<valeur>
Exemple (test local) :
http://<hôte>/event-management-master/register.php?event_id=1
Une exploitation réussie permet l'exécution de JavaScript arbitraire dans le contexte du domaine concerné.
Conséquences potentielles :
HttpOnly)Estimation CVSS v3.1 : 6.1 (Moyen) — AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N
event_id.La charge utile complète et la preuve de concept ont été partagées en privé avec le fournisseur.
Si vous êtes le mainteneur et avez besoin d'y accéder, veuillez contacter le signaleur (voir ci-dessous).
Appliquez une validation côté serveur et un encodage de sortie pour empêcher le XSS réfléchi.
Validation des entrées
Si event_id est numérique, imposez une validation numérique :
$event_id = filter_input(INPUT_GET, 'event_id', FILTER_VALIDATE_INT);
if ($event_id === false) {
// gérer l'entrée invalide
}
Encodage de sortie
Échappez les données fournies par l'utilisateur avant de les imprimer en HTML :
echo htmlspecialchars($event_id, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
Utiliser des frameworks ou modèles sécurisés
Privilégiez les frameworks qui effectuent automatiquement un échappement contextuel.
Cookies sécurisés
Définissez les indicateurs HttpOnly, Secure et SameSite sur les cookies de session.
Politique de sécurité du contenu (CSP)
Appliquez une CSP stricte et évitez d'utiliser unsafe-inline.
Revue de code et audit
Vérifiez tous les autres paramètres reflétés dans l'ensemble de l'application.
// Valider l'entrée numérique
$event_id = filter_input(INPUT_GET, 'event_id', FILTER_VALIDATE_INT);
if ($event_id === false || $event_id === null) {
$event_id = 0; // ou afficher une erreur / rediriger
}
// Sortie sécurisée
?>
<span id="event-id"><?= htmlspecialchars($event_id, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?></span>
<?php
htmlspecialchars() : https://www.php.net/manual/en/function.htmlspecialchars.phpSignalé par : Hafiz Pradana Gemilang
Fournisseur : PuneethReddyHC / event-management
Cet avis omet le code d'exploitation détaillé pour protéger les utilisateurs du logiciel concerné.
Les détails techniques complets sont disponibles pour le fournisseur ou les coordinateurs autorisés sur demande dans le cadre d'une divulgation responsable.