Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted INI file to parser
-
ExploitSupply overlong line plus embedded NUL
-
ExecutionTrigger abyss[-1] stack under-read
-
ImpactCause undefined behavior or crash
Vulnerability Assessment
| Weakness |
CWE
|
| Exploitation Conditions | Exploitation requires the host application to parse attacker-controlled INI input (file or string) using inih before r63, and the input must contain a line of at least INI_MAX_LINE-1 bytes immediately followed by an embedded NUL byte so that the overlong-line discard loop computes strlen(abyss)==0 and reads abyss[-1]. Limiting factors: the attack vector is local (AV:L) and demands passive user/application interaction (UI:P) to load the malicious INI data - there is no remote network trigger in the scored vector; privileges are not required (PR:N). Impact is bounded to a single out-of-bounds read producing undefined behavior/crash (VA:L), with no confidentiality or integrity effect, so the realistic consequence is limited to availability of the parsing process. The only complete fix per the vendor is updating to r63. |
| Impact | This is a genuinely low-priority issue despite the available patch and 'this_month' decision label. The supplied CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L) scores only 4.8 (Medium), and every high-impact signal is absent: no confidentiality or integrity impact (VC:N/VI:N) and only low availability impact (VA:L). The flaw is a one-byte stack buffer under-read (CWE-127) reading abyss[-1] - it does not leak that byte to the attacker; it corrupts a comparison and manifests as undefined behavior typically caught by memory sanitizers, so the realistic worst case is misparsing or a crash, not data theft. No EPSS score and no KEV listing are present in the input, so exploitation status is 'no public exploit identified at time of analysis'; a public technical writeup (hackmd) and a VulnCheck advisory describe the flaw but are not verified working exploit code. The local attack vector (AV:L) plus required passive user interaction (UI:P - an application must parse attacker-supplied INI input) further limit real-world risk. Note one tension to verify: the tag labels this 'Information Disclosure,' but the CVSS vector sets VC:N and marks only availability (VA:L) impact, so the 'disclosure' framing is not supported by the scored impact. |
| Exploit ScenarioDerived | An attacker supplies a crafted INI file or string to an application that embeds inih (before r63), containing a line of at least INI_MAX_LINE-1 bytes followed immediately by an embedded NUL byte. When ini_parse_stream() processes the overlong discarded line, strlen returns 0 and the code reads abyss[strlen(abyss)-1], i.e. abyss[-1], one byte before the buffer. A public writeup and VulnCheck advisory document the mechanism, but no confirmed working exploit code is provided; the practical outcome is undefined behavior or a crash rather than code execution or data disclosure. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 02, 2026
A one-byte stack buffer under-read exists in ini_parse_stream() in inih before release r63, reachable when a host application parses attacker-supplied INI content containing a line of at least INI_MAX_LINE-1 bytes immediately followed by an embedded NUL byte. The scored impact is limited to availability: a single out-of-bounds read of abyss[-1] that triggers undefined behavior and can crash the parsing process, with no confidentiality or integrity effect in the assessed vector (the CWE-127 classification reflects the out-of-bounds read class, not a confirmed disclosure primitive). The vector is local (AV:L) and requires the user or application to load the crafted INI data (UI:R/UI:P) with no privileges needed (PR:N); exploitation conditions depend entirely on the host application accepting untrusted INI input. Vendor-released patch: r63, via upstream PR #206 and commit 8e06f6b; a public technical write-up describing the trigger is referenced, but no working exploit code and no active exploitation (CISA KEV) were identified at time of analysis, and the priority label is this_month.
RemediationAI
Vendor-released patch: upgrade to inih r63, which is the only complete fix per the vendor; the change is upstream PR #206 (https://github.com/benhoyt/inih/pull/206) with commit 8e06f6b77b5d4471bdc6d85ada81b67d37354a5c, adding a size_t abyss_len and guarding the newline check with abyss_len > 0 so abyss[-1] is never dereferenced. For embedded consumers, identify every bundled or vendored copy of ini.c (including transitive dependencies that ship pre-r63 sources) and rebuild against r63 or cherry-pick the two-line guard, then confirm the patch by diffing against the r62 reference at https://github.com/benhoyt/inih/blob/r62/ini.c#L162-L169 and the release notes at https://github.com/benhoyt/inih/releases/tag/r63. No vendor-documented workaround or configuration-based mitigation is described in the available sources, and because the trigger requires a long line ending in an embedded NUL byte, updating the library is the recommended course rather than attempting to filter INI input at the call site; the residual risk until patched is a local, user-interaction-driven crash of the parsing process with no assessed confidentiality or integrity impact.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
inih is a small, widely embedded C INI parser (benhoyt/inih) used as a library inside other applications rather than as a standalone network service, so exposure is inherited from whatever host program calls it. The flaw lives in the overlong-line discard path of ini_parse_stream() in ini.c: when a line exceeds the parser's fixed INI_MAX_LINE buffer, the remainder of that line is consumed in a discard loop that inspects abyss[strlen(abyss) - 1] to detect a trailing newline (r62 code at ini.c lines 162-169). Because the check assumes a non-empty string, an input line of at least INI_MAX_LINE-1 bytes terminated by an embedded NUL byte leaves abyss as an empty string, so strlen(abyss) - 1 underflows to SIZE_MAX and the parser reads abyss[-1], one byte before the buffer. This is CWE-127 (buffer under-read); the upstream fix in PR #206 caches the length in a new size_t abyss_len and guards the access with abyss_len > 0 before comparing abyss[abyss_len - 1] to a newline. Confirming scope: the CPE cpe:2.3:a:benhoyt:inih:*:*:*:*:*:*:*:* covers all builds prior to r63, and the trigger is not described as remotely reachable in the scored vector - it is a local, interaction-dependent parsing condition inside the embedding application's memory, and the observable effect reported by the finders is undefined behavior flagged by memory sanitizers rather than demonstrated data exfiltration.
Know when Inih 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
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Attacker supplies crafted INI parsed locally so AV:L and UI:R; no privileges needed (PR:N); single-byte under-read yields no C/I impact and only low availability (crash/UB).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
inih before r63 contains a one-byte stack buffer under-read in ini_parse_stream() in ini.c that allows attackers to read abyss[-1] via an embedded NUL byte after an overlong line. Attackers can supply an INI file or string with a line of at least INI_MAX_LINE-1 bytes followed by a NUL byte, causing undefined behavior reported by memory sanitizers.
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.
EUVD-2025-211238
GHSA-gh7m-xpp3-w3vq
NVD
CVE.org
EPSS
Exploit-DB