
Modèle de détection Nuclei pour CVE-2026-41473, une faille d'accès API en lecture/écriture sans authentification dans CyberPanel AI Scanner avant la version 2.4.4. Utilise deux sondes HTTP pour confirmer l'absence d'authentification.
Modèle de détection Nuclei pour CVE-2026-41473 affectant les versions de CyberPanel antérieures à 2.4.4.
La fonctionnalité scanner IA de CyberPanel expose deux points de terminaison API sans authentification :
| Point de terminaison | Méthode | Impact |
|---|
/api/ai-scanner/list-api-keys | GET | Divulgue les noms d'utilisateur administrateurs, les préfixes de clés API, les noms de domaines hébergés et les identifiants de scan |
/api/ai-scanner/callback | POST | Accepte des écritures arbitraires dans l'historique de scan sans authentification |
Les deux points de terminaison se trouvent sous le préfixe d'URL /api/*, que secMiddleware de CyberPanel exempte inconditionnellement des contrôles d'authentification de session. Aucun jeton, cookie de session ou identifiant d'aucune sorte n'est requis pour atteindre l'un ou l'autre point de terminaison.
Le point de terminaison en lecture permet l'énumération de cibles. Le point de terminaison en écriture permet la corruption de l'historique de scan et, lorsqu'il est chaîné avec le XSS stocké dans le tableau de bord du scanner IA (CVE-2026-41472), permet d'obtenir une exécution de code à distance non authentifiée via la manipulation de tâches cron.
CVSS 3.1 : AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — 9.8 Critique
CWE : CWE-306 (Absence d'authentification pour une fonction critique)
Corrigé dans : CyberPanel 2.4.4 (commit 8eb29181cb137baa4adb4bba5dce60f601d55a5f)
Le modèle envoie deux requêtes :
Requête 1 — GET /api/ai-scanner/list-api-keys
Confirme que la cible est une instance CyberPanel avec la fonctionnalité scanner IA activée et que le point de terminaison en lecture n'est pas protégé. Correspond à la structure JSON (api_keys, recent_scans, is_payment_configured) avec un code HTTP 200. Extrait les noms d'utilisateur administrateurs, les préfixes de clés API, les noms de domaines et les identifiants de scan en tant que sorties nommées.
Requête 2 — POST /api/ai-scanner/callback avec un corps vide {}
Sonde le point de terminaison en écriture sans effectuer d'écriture réelle. Un corps vide signifie qu'aucun scan_id n'est présent, le serveur ne peut donc pas faire correspondre ou modifier un enregistrement ScanHistory existant. Sur un serveur vulnérable (< 2.4.4), le contrôle d'authentification est ignoré et Django renvoie HTTP 400 avec scan_id dans le corps de l'erreur — le serveur atteint la validation des entrées sans jamais imposer d'authentification. Sur un serveur corrigé (≥ 2.4.4), le contrôle de l'en-tête X-API-Key se déclenche en premier et renvoie HTTP 401 avant même que scan_id ne soit lu.
La correspondance nécessite tous les éléments suivants :
scan_id dans le corps de la réponse + type de contenu application/jsonCette combinaison confirme que la logique du scanner IA de CyberPanel a été atteinte sur les deux requêtes sans qu'aucune authentification ne soit imposée, tout en excluant les blocages WAF, les erreurs de proxy inverse et les réponses 400 sans rapport.
nuclei -t cyberpanel-aisscanner-unauth-rw-cve-2026-41473.yaml -u https://target:8090
# Against a list of targets
nuclei -t cyberpanel-aisscanner-unauth-rw-cve-2026-41473.yaml -l targets.txt
| Version | Statut |
|---|---|
| CyberPanel < 2.4.4 avec scanner IA | Vulnérable |
| CyberPanel ≥ 2.4.4 | Corrigé |
| CyberPanel sans module scanner IA | Non affecté |
Les instances CyberPanel sans la fonctionnalité scanner IA (généralement les versions antérieures à 2.3) ne correspondront pas — le point de terminaison list-api-keys renverra 404 et le modèle ne se déclenchera pas.