---
id: "CVE-2026-107812"
kind: "vulnerability"
aliases: ["CVE-2026-107812", "GHSA-662p-52hx-cmh2", "GO-2026-6705"]
title: "Nginx UI: Self-upgrade runs an unsigned binary verified only by a same-origin digest \u2192 RCE via a compromised mirror or MITM in github.com/0xJacky/Nginx-UI"
severity: "high"
cvss: 7.5
epss: 0.00175
exploited: false
status: "open"
category: "package"
products: [{"name": "github.com/0xJacky/Nginx-UI", "fixed": ["1.9.10-0.20260728114330-580585516dd8"], "affected": ">= 1.9.10-0.20250517140552-daee3ac7ade1, < 1.9.10-0.20260728114330-580585516dd8", "ecosystem": "go"}]
ecosystems: ["go"]
tags: ["go", "nginx", "nginx-ui", "package", "self-hosted"]
not_affected_if: ["no operator-triggered self-upgrade", "version outside affected range"]
published_at: "2026-10-09T16:17:25+00:00"
first_seen_at: "2026-10-23T19:13:08+00:00"
updated_at: "2026-10-23T19:56:04+00:00"
sources: [{"source": "govuln", "url": "https://pkg.go.dev/vuln/GO-2026-6705", "first_seen_at": "2026-10-23T19:13:08+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-107812", "first_seen_at": "2026-10-23T19:13:43+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-107812", "first_seen_at": "2026-10-23T19:35:23+00:00"}]
---

# Nginx UI: Self-upgrade runs an unsigned binary verified only by a same-origin digest → RCE via a compromised mirror or MITM in github.com/0xJacky/Nginx-UI

Nginx UI's self-upgrade feature downloads a new binary and checks it only against a digest served by the same upgrade mirror, so it accepts any executable that comes with a matching digest. An attacker who controls the mirror or can intercept and alter both responses gets code running inside the Nginx UI process when an operator triggers an upgrade.

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

## Affected

- go:github.com/0xJacky/Nginx-UI affected >= 1.9.10-0.20250517140552-daee3ac7ade1, < 1.9.10-0.20260728114330-580585516dd8 fixed 1.9.10-0.20260728114330-580585516dd8

## How to check

Compare the installed Nginx UI version against the affected range in GO-2026-6705 (github.com/0xJacky/Nginx-UI).
Sources do not give a command to read the installed version.
Sources do not say whether the upgrade mirror is configurable.

## Fix

Upgrade to version 2.5.0 (Go pseudo-version 1.9.10-0.20260728114330-580585516dd8).
Until upgraded, avoid running self-upgrade on untrusted networks.

## Timeline

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

## From the sources

Nginx UI is a web user interface for the Nginx web server. From 2.0.0 until 2.5.0, the self-upgrade mechanism validates a downloaded binary only with a same-origin digest obtained from the same upgrade mirror. A compromised mirror or network attacker able to alter both responses can supply a malicious executable and matching digest. An operator-triggered upgrade is required, and the application installs and runs the attacker-controlled code in the Nginx UI process context on the next upgrade. This issue is fixed in version 2.5.0.

---

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