---
id: "CVE-2026-84313"
kind: "vulnerability"
aliases: ["CVE-2026-84313", "GHSA-gfrc-g87h-7h5w", "GO-2026-6786"]
title: "TOTP / passkey enrolment requires no re-authentication, enabling persistent account takeover in github.com/0xJacky/Nginx-UI"
severity: "high"
cvss: 8.8
epss: 0.00428
exploited: false
status: "open"
category: "package"
products: [{"name": "github.com/0xJacky/Nginx-UI", "fixed": [], "affected": "all versions", "ecosystem": "go"}]
ecosystems: ["go"]
tags: ["go", "nginx-ui", "package", "self-hosted"]
not_affected_if: ["version-2.4.1-or-later"]
published_at: "2026-10-12T21:17:21+00:00"
first_seen_at: "2026-10-23T19:13:08+00:00"
updated_at: "2026-10-23T19:51:20+00:00"
sources: [{"source": "govuln", "url": "https://pkg.go.dev/vuln/GO-2026-6786", "first_seen_at": "2026-10-23T19:13:08+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-84313", "first_seen_at": "2026-10-23T19:13:43+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-84313", "first_seen_at": "2026-10-23T19:35:23+00:00"}]
---

# TOTP / passkey enrolment requires no re-authentication, enabling persistent account takeover in github.com/0xJacky/Nginx-UI

Nginx UI, a web interface for managing Nginx, lets any holder of a valid login session bind an attacker-controlled TOTP secret or passkey to the account without re-entering the password. An attacker with a stolen JWT gets persistent account access that survives a password change.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- go:github.com/0xJacky/Nginx-UI affected all versions fixed ?

## How to check

Check the Go module version of github.com/0xJacky/Nginx-UI in your go.mod or the running binary; anything below 2.4.1 is affected.

## Fix

Upgrade github.com/0xJacky/Nginx-UI to 2.4.1 or later.
After upgrading, review TOTP and passkey entries on user accounts for ones you did not add, and rotate JWT secrets if a token may have been stolen.

## Timeline

- 2026-10-23T19:13:08+00:00 govuln https://pkg.go.dev/vuln/GO-2026-6786
- 2026-10-23T19:13:43+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-84313
- 2026-10-23T19:35:23+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-84313

## From the sources

Nginx UI is a web user interface for the Nginx web server. Prior to 2.4.1, POST /api/otp_enroll and POST /api/finish_passkey_register are registered outside RequireSecureSession and accept a normal authenticated session without verifying the current password. An attacker with a stolen JWT can bind an attacker-controlled TOTP secret when the victim has not already enabled TOTP, or can register an attacker-controlled passkey because that path has no equivalent existing-enrollment guard. These changes create persistent account access that can survive a password change and interfere with the legitimate user's authentication. This issue is fixed in version 2.4.1.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
