Contournement d'authentification dans Nginx-UI (CVE-2026-84312)
Résumé
Contournement d'authentification dans Nginx-UI (CVE-2026-84312). Des informations confidentielles peuvent être exposées. Exploitable via state.
Description d'origine
La description telle que publiée par la source (souvent en anglais).
Summary
In the Casdoor SSO flow, the OAuth state parameter is hard-coded to settings.CasdoorSettings.Application — a value identical for every user and every login. The callback handler accepts whatever state the client sends without comparing it to anything stored in the user agent, enabling a login-CSRF: an attacker can force the victim's browser to authenticate as the attacker.
Details
api/user/casdoor.go:92-117 (GetCasdoorUri):
func GetCasdoorUri(c *gin.Context) {
clientId := settings.CasdoorSettings.ClientId
redirectUri := settings.CasdoorSettings.RedirectUri
state := settings.CasdoorSettings.Application // ← constant
...
c.JSON(http.StatusOK, gin.H{
"uri": fmt.Sprintf(
"%s/login/oauth/authorize?client_id=%s&response_type=code&redirect_uri=%s&state=%s&scope=read",
endpoint, clientId, encodedRedirectUri, state),
})
}
api/user/casdoor.go:24-90 (CasdoorCallback):
type CasdoorLoginUser struct {
Code string `json:"code" binding:"required,max=255"`
State string `json:"state" binding:"required,max=255"`
}
func CasdoorCallback(c *gin.Context) {
var loginUser CasdoorLoginUser
if !cosy.BindAndValid(c, &loginUser) { return }
...
// state is NEVER compared to a per-session value
token, err := casdoorsdk.GetOAuthToken(loginUser.Code, loginUser.State)
...
u, err := user.GetUser(claims.Name) // username from Casdoor's JWT
...
user…
Source: NIST National Vulnerability Database NVD GitHub Advisory
Résumé généré automatiquement
Assemblé par SecPulse à partir des données sources (CVSS, CWE, versions affectées) à l'aide de modèles, sans IA. Vérifiez la description d'origine et les références ci-dessous.
Une vulnérabilité référencée CVE-2026-84312 a été découverte dans Nginx-UI.
Des attaquants peuvent cibler un point d'entrée spécifique comme state à distance pour détourner le produit.
Des informations confidentielles peuvent être exposées. Score CVSS : 7.1/10.
Action : appliquez le correctif officiel de l'éditeur.
En cas de doute, contactez votre service informatique ou cherchez « Nginx-UI CVE-2026-84312 » sur le site de l'éditeur.
CVE-2026-84312 (Nginx-UI) — CWE-287 / CVSS v3 7.1
Vecteur d'attaque : distant (réseau) / non authentifié
Surface d'attaque : state / settings.CasdoorSettings.Application / GetCasdoorUri / CasdoorCallback
Contournement : Disable Casdoor SSO until patched.
Plan : 1) Audit SBOM, 2) Mise à jour staging→prod, 3) Surveillance WAF/proxy sur les endpoints affectés, 4) Recherche d'IOC dans les logs.
Réfs : voir GHSA / avis éditeur / version corrigée liés sur cette page.
Une contournement d'authentification (CWE-287) affecte Nginx-UI. Les attaquants atteignent le code vulnérable via state sans authentification.
Consultez l'avis de l'éditeur pour les versions affectées de Nginx-UI. Surface d'attaque : state / settings.CasdoorSettings.Application / GetCasdoorUri / CasdoorCallback.
Gravité : Élevée (CVSS 7.1/10). Des informations confidentielles peuvent être exposées.
Mettre à jour vers la version corrigée selon l'avis éditeur.
Contournement : Disable Casdoor SSO until patched.
Recherchez dans les logs des requêtes correspondant aux IOC connus de cette CVE. Auditez les SBOM/dépendances.
Actions de réponse
Étapes concrètes et exemples de commandes que les équipes SOC/SRE doivent exécuter dans l'ordre
-
1Identify exposure identify
grep -r 'Nginx-UI' . | grep -v node_modulesリポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で
Nginx-UIを grep し、稼働しているサービス・バージョンを把握する。 -
2Apply temporary workaround mitigate
Disable Casdoor SSO until patched.パッチが適用されるまでの応急処置として、Disable Casdoor SSO until patched. を実施。回避策の副作用 (機能低下) を確認した上で。
-
3Post-deployment verification verify
Confirm patched version is live in productionパッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。