Skip to main content

apcupsd EUVDEUVD-2026-90187

| CVE-2026-103436 LOW
Use of Uninitialized Variable (CWE-457)
2026-09-30 mitre GHSA-8jv2-xm7v-55rg
3.7
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach exposed apcupsd CGI endpoint
  2. Delivery
    Request status variable hitting short STATUS line
  3. Exploit
    sscanf leaves answer buffer uninitialized
  4. Execution
    CGI prints stack memory in HTTP response
  5. Impact
    Attacker harvests leaked fragments

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Variable initialization checks
Exploitation Conditions

Exploitation requires that apcupsd's optional CGI web interface (upsstats.cgi, multimon.cgi, or upsfstats.cgi from src/cgi/) be built, deployed, and network-reachable - a non-default optional component, not part of the core daemon. The specific trigger is the single-field path in getupsvar() where a matched STATUS line contains fewer than three whitespace-separated tokens, causing sscanf("%*s %*s %s", answer) to make no assignment while the function still returns success. Limiting factors: the disclosure is confined to uninitialized stack memory (contents non-deterministic and often not sensitive), high attack complexity (AC:H) reflects the narrow parsing condition, and the CGI feature must be exposed rather than the daemon alone; no authentication or user interaction is needed once the endpoint is reachable.

Impact

This is a low-severity information-disclosure issue and should be treated as low priority despite the network attack vector. The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N, base 3.7) is internally consistent with the description: exploitation is unauthenticated and remote but carries high attack complexity (AC:H) because it depends on a specific parsing edge case - a matched STATUS line containing fewer than three whitespace-separated tokens - and the leaked data is uninitialized stack memory whose contents are non-deterministic, justifying only C:L with no integrity or availability impact. No EPSS score, KEV listing, POC, or SSVC decision data was provided in the input; per precision rules this is 'no public exploit identified at time of analysis.' There are no conflicting signals: the description, CWE-457 (use of uninitialized resource), and the CVSS vector all align on a limited memory-disclosure weakness. The practical ceiling is leakage of small, opportunistic fragments of process stack memory via the CGI HTTP response, not reliable disclosure of secrets, so this is a genuine but minor issue rather than a high-impact flaw.

Exploit ScenarioDerived

An attacker who can reach the apcupsd CGI endpoints (upsstats.cgi, multimon.cgi, or upsfstats.cgi) requests a UPS status variable whose matched STATUS line has fewer than three whitespace-separated tokens; getupsvar()'s sscanf performs no assignment yet returns success, so the uninitialized 'answer' buffer is rendered into the HTTP response. Repeated requests may leak differing fragments of stack memory. No public exploit code is identified at time of analysis, and the high complexity means the leak is opportunistic rather than reliably targeted.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 30, 2026

Uninitialized stack memory disclosure in apcupsd's optional CGI web interface (upsstats.cgi, multimon.cgi, upsfstats.cgi) allows remote attackers to read non-deterministic stack contents from HTTP responses when a matched STATUS line contains fewer than three whitespace-separated tokens. All versions through 3.14.14 are affected per the CPE range, but exposure requires that the non-default CGI component be built, deployed, and network-reachable; the core apcupsd daemon itself is not affected. The issue is rated low severity (CVSS 3.1 base 3.7, AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N) both because the parsing condition is narrow and because the leaked bytes are uninitialized memory whose contents are unpredictable and frequently non-sensitive; no public exploit identified at time of analysis, and the vulnerability is not confirmed actively exploited (CISA KEV).

RemediationAI

No vendor-released patch identified at time of analysis; the cited GitHub reference points at the vulnerable code line rather than a fixed release, so verify against the upstream apcupsd project (https://sourceforge.net/projects/apcupsd/) and Red Hat Bugzilla 2493140 for a corrected version, and treat any version-number claim as unverified until the vendor publishes it. In the meantime, the highest-value compensating control is to stop building and exposing the optional CGI interface entirely: if upsstats.cgi, multimon.cgi, and upsfstats.cgi are not required, remove them from the web root and unfreeze the GCI build, which eliminates the vulnerable code path with no side effects to the daemon. If the CGI status pages are operationally required, restrict reachability rather than relying on the parser fix - for example place the CGI directory behind HTTP authentication, an IP allowlist, or a reverse-proxy ACL so only trusted management hosts can reach it, accepting that this only reduces the attack surface (any permitted client can still trigger the disclosure) and that it changes how legitimate users access the pages. Disabling the CGI web interface in favor of polling apcupsd's native NIS or network-socket status APIs, or upgrading to a distro backport once one ships, are the more durable options; note that these changes alter monitoring integrations and require reconfiguring any dashboard that consumed the CGI output.

Affected VersionsENISA

apcupsd 0 ≤3.14.14

Affected Packages

euvd apcupsd no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

apcupsd is a daemon for controlling APC UPS hardware, and it ships an optional set of CGI programs under src/cgi/ that render UPS status into web pages. The vulnerable routine is getupsvar() in src/cgi/upsfetch.c, which parses the STATUS response from apcupsd using sscanf("%*s %*s %s", answer). The two leading %*s conversions consume and discard the first two whitespace-separated tokens, and the final %s is supposed to place the third token into the destination buffer 'answer'. When the matched STATUS line has fewer than three tokens, the third conversion never fires, so 'answer' is left untouched and the caller nevertheless treats the call as successful and writes the buffer's contents into the HTTP response. The root cause is CWE-457 (Use of Uninitialized Variable): a return-value/assignment check that does not distinguish 'no conversion performed' from 'conversion succeeded'. The CPE string cpe:2.3:a:apcupsd:apcupsd:*:*:*:*:*:*:*:* indicates that the affected surface spans the full apcupsd version range up to and including 3.14.14, with the vulnerable code path referenced at the upstream source line https://github.com/therealbstern/apcupsd/blob/224d19d5faa508d04267f6135fe53d50800550de/src/cgi/upsfetch.c#L240 and tracked in Red Hat Bugzilla 2493140.

Know when Apcupsd gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (mitre) PRIMARY 3.7 LOW
AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 3.7 LOW

Remote unauthenticated request to CGI (AV:N/PR:N), but AC:H for the narrow short-STATUS-line trigger; only low confidentiality from uninitialized stack leak, no I/A.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

DescriptionCVE.org

apcupsd through 3.14.14 discloses uninitialized stack memory in getupsvar() in src/cgi/upsfetch.c (used by upsstats.cgi, multimon.cgi, and upsfstats.cgi. On the single-field path, when the matched STATUS line has fewer than three whitespace-separated tokens, sscanf("%*s %*s %s", answer) performs no assignment but the function returns success, and thus the caller prints the uninitialized destination buffer into the HTTP response.

Threat Intelligence Overview

EPSS Score
0.4%
Top 73% exploitable
Prevalence
Medium
widely-used open-source APC UPS daemon, but CGI web interface is optional
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

18
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +18
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy