
Pack de preuve de concept et de divulgation pour CVE-2026-61628, une élévation de privilèges TOCTOU non authentifiée dans nginx-ignition 2.41.0 qui permet la création d'un compte administrateur.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-61628
nginx-ignition 2.41.0 — lucasdillmann
nginx ignition est une interface utilisateur pour le serveur web nginx. Avant la version 2.41.1, POST /api/users/onboarding/finish est enregistré comme anonyme (non authentifié) et crée un utilisateur disposant de toutes les permissions d'administration ReadWrite. Comme le gestionnaire utilise un schéma check-then-act (TOCTOU) entre la vérification de l'onboarding déjà terminé et l'écriture de création de l'utilisateur, sans garde atomique, un attaquant distant non authentifié capable d'atteindre une instance dans son état pré-onboarding peut créer un compte administrateur pour lui-même, et des requêtes concurrentes peuvent créer plusieurs comptes administrateurs lors d'une seule race. La version 2.41.1 corrige le problème.
| CVE | CVE-2026-61628 · CVE.org |
| CWE | CWE-362 |
| CVSS | Élevé : 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Produit | nginx-ignition |
| Affecté | toutes les versions jusqu'à 2.41.0 (inclus) |
| Corrigé | 2.41.1 et ultérieures |
| Auth | non authentifié (voir la cartographie source) |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 uniquement · pack de divulgation fournisseur/client, pas un scanner |
api/user/onboarding_finish_handler.go check-then-act. Route AllowAnonymous dans api/user/routes.go. Correctif 2.41.1 FinishOnboarding.
POST/api/users/onboarding/finishGET /api/users/onboarding/status finished=falsePOST /api/users/onboarding/finish concurrent JSON name/username/passwordVérification OnboardingCompleted puis Save sans verrou200 JSON token JWT ; GET /api/users/current Users=READ_WRITE200 non authentifié avec JWT ; /api/users/current Users=READ_WRITE. Race : n200>=2 noms d'utilisateur administrateur distincts.
À faire en premier : Mettez à jour nginx-ignition vers 2.41.1 ou une version plus récente.
Vérifier après la mise à niveau
CVE-2026-61628-Abraxas-Labs.py contre la version corrigée : le témoin cartographié ne doit pas apparaître.Si vous ne pouvez pas mettre à jour immédiatement
Ciblez uniquement http://127.0.0.1:8088 (ou le loopback que vous avez lié). Ne pointez pas ce script vers Internet.
python3 CVE-2026-61628-Abraxas-Labs.py
Le succès correspond au témoin ci-dessus dans le corps de la réponse. Un 200 HTML générique n'en fait pas partie.
Pile loopback utilisée pour la reproduction. Images officielles sauf si un Dockerfile dans ce dossier est construit depuis les sources.
cd lab
docker compose up --force-recreate
Liez l'arborescence du produit vulnérable à côté de Compose si le YAML monte un répertoire local (zip de plugin / tag source issu du tableau des versions). Ne publiez rien d'autre que 127.0.0.1.
github.com/lucasdillmann/nginx-ignition/security/advisories/GHSA-pxcx-fv34-x9p5
github.com/lucasdillmann/nginx-ignition/commit/0586b4e55ab780676d3553a2592979dfa2fb0183
Abraxas Labs : abraxaslabs.tech · github.com/abraxas · @abraxas_null
# CVE-2026-61628
CWE: CWE-362
CVSS: High 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
## NVD description
nginx ignition is a user interface for the nginx web server. Prior to version 2.41.1, POST /api/users/onboarding/finish is registered as anonymous (unauthenticated) and creates a user with full ReadWrite admin permissions. Because the handler uses a check-then-act (TOCTOU) pattern between the onboarding already completed check and the user-creation write, with no atomic guard, a remote unauthenticated attacker who can reach an instance in its pre-onboarding state can create an administrator account for themselves, and concurrent requests can create multiple admin accounts in a single race. Version 2.41.1 patches the issue.
## Product
nginx-ignition 2.41.0 (fixed in 2.41.1). Not RCE.
Ce pack de divulgation est sous licence GNU Affero General Public License v3.0. Voir LICENSE.
Ce pack est destiné au fournisseur, au propriétaire du site et aux labs autorisés. Le script communique avec 127.0.0.1. Son utilisation contre des systèmes que vous ne possédez pas n'est pas autorisée par Abraxas Labs. Aucune garantie.