
Modello di rilevamento Nuclei per CVE-2026-41473, una vulnerabilità di accesso API in lettura/scrittura non autenticato in CyberPanel AI Scanner precedente alla versione 2.4.4. Utilizza due probe HTTP per confermare l'assenza di autenticazione.
Template di rilevamento Nuclei per CVE-2026-41473 che interessa le versioni di CyberPanel precedenti alla 2.4.4.
La funzionalità AI Scanner di CyberPanel espone due endpoint API senza autenticazione:
| Endpoint | Metodo | Impatto |
|---|
/api/ai-scanner/list-api-keys | GET | Divulga nomi utente admin, prefissi delle chiavi API, nomi di dominio ospitati e ID di scansione |
/api/ai-scanner/callback | POST | Accetta scritture arbitrarie nella cronologia delle scansioni senza autenticazione |
Entrambi gli endpoint si trovano sotto il prefisso URL /api/*, che il secMiddleware di CyberPanel esenta incondizionatamente dai controlli di autenticazione di sessione. Per raggiungere entrambi gli endpoint non è richiesto alcun token, cookie di sessione o credenziale di alcun tipo.
L'endpoint di lettura consente l'enumerazione dei target. L'endpoint di scrittura consente la corruzione della cronologia delle scansioni e, se sfruttato in combinazione con la XSS persistente nella dashboard dell'AI Scanner (CVE-2026-41472), permette l'esecuzione remota di codice non autenticata tramite la manipolazione dei cron job.
CVSS 3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — 9.8 Critico
CWE: CWE-306 (Autenticazione mancante per funzione critica)
Corretto in: CyberPanel 2.4.4 (commit 8eb29181cb137baa4adb4bba5dce60f601d55a5f)
Il template invia due richieste:
Richiesta 1 — GET /api/ai-scanner/list-api-keys
Conferma che il target è un'istanza CyberPanel con la funzionalità AI Scanner attiva e l'endpoint di lettura non protetto. Trova corrispondenza sulla struttura JSON (api_keys, recent_scans, is_payment_configured) con HTTP 200. Estrae nomi utente admin, prefissi delle chiavi API, nomi di dominio e ID di scansione come output nominati.
Richiesta 2 — POST /api/ai-scanner/callback con corpo vuoto {}
Sonda l'endpoint di scrittura senza eseguire alcuna scrittura reale. Un corpo vuoto significa che non è presente alcun scan_id, quindi il server non può associare o modificare alcun record ScanHistory esistente. Su un server vulnerabile (< 2.4.4), il controllo di autenticazione viene saltato e Django restituisce HTTP 400 con scan_id nel corpo dell'errore — il server ha raggiunto la validazione dell'input senza mai applicare l'autenticazione. Su un server corretto (≥ 2.4.4), il controllo dell'header X-API-Key scatta per primo e restituisce HTTP 401 prima che scan_id venga mai letto.
La corrispondenza richiede tutte le seguenti condizioni:
scan_id nel corpo della risposta + content type application/jsonQuesta combinazione conferma che la logica AI Scanner di CyberPanel è stata raggiunta in entrambe le richieste senza alcuna autenticazione imposta, escludendo al contempo blocchi WAF, errori del proxy inverso e risposte 400 non correlate.
nuclei -t cyberpanel-aisscanner-unauth-rw-cve-2026-41473.yaml -u https://target:8090
# Contro un elenco di target
nuclei -t cyberpanel-aisscanner-unauth-rw-cve-2026-41473.yaml -l targets.txt
| Versione | Stato |
|---|---|
| CyberPanel < 2.4.4 con AI Scanner | Vulnerabile |
| CyberPanel ≥ 2.4.4 | Corretto |
| CyberPanel senza modulo AI Scanner | Non interessato |
Le istanze CyberPanel senza la funzionalità AI Scanner (generalmente versioni precedenti alla 2.3) non corrisponderanno: l'endpoint list-api-keys restituirà 404 e il template non scatterà.