Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed apcupsd CGI endpoint
-
DeliveryRequest status variable hitting short STATUS line
-
Exploitsscanf leaves answer buffer uninitialized
-
ExecutionCGI prints stack memory in HTTP response
-
ImpactAttacker 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
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.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Apcupsd 0.3.91_5, as used in pfSense through 2.4.4-RELEASE-p3 and other products, has an Arbitrary Command Execution iss
In Adam Kropelin adk0212 APC UPS Daemon through 3.14.14, the default installation of APCUPSD allows a local authenticate
Stack-based buffer overflow in apcupsd through 3.14.14 allows unauthenticated remote attackers to corrupt memory and pot
Apcupsd 0.3.91_5, as used in pfSense through 2.4.4-RELEASE-p3 and other products, has an XSS issue in apcupsd_status.php
EUVD-2026-90187
GHSA-8jv2-xm7v-55rg
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB