Skip to main content

libfyaml EUVDEUVD-2026-85909

| CVE-2026-88359 MEDIUM
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-09-24 cve@mitre.org GHSA-3qj9-89fg-m5cw
6.5
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

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

  1. Access
    Craft YAML with huge empty-line block scalar
  2. Delivery
    Submit to app parsing with libfyaml
  3. Exploit
    alloca() called per line in fy_atom_iter_format loop
  4. Execution
    Cumulative stack growth exceeds limit
  5. Impact
    SIGSEGV crashes parsing process (DoS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires that an application built against libfyaml 0.9.6 parses an attacker-influenced YAML document containing a literal or folded block scalar with a large run of empty (blank) lines - the exact input pattern that drives the per-line alloca() growth in fy_atom_iter_format(). No authentication, privileges, or special library configuration are needed (PR:N), but exploitation depends on the consuming application actually accepting untrusted YAML as input (UI:R); deployments that parse only trusted, local configuration files are not practically exposed, and the impact is limited to crashing the single parsing process.

Impact

This is a genuine but low-priority denial-of-service issue. The signals are internally consistent and point to modest real-world risk: EPSS is 0.15% (4th percentile), there is no CISA KEV listing, and no public exploit code is referenced - only the upstream fix commits and the GitHub issue (#315). The NVD CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H, base 6.5) is coherent with the description: no confidentiality or integrity impact, availability-only, and UI:R reflects that a victim application must be induced to parse an attacker-supplied YAML document. The impact is bounded to a crash (SIGSEGV) of the single process performing the parse - there is no scope change (S:U) and no memory-corruption/code-execution primitive, since the fix simply moves an in-loop alloca() buffer to the heap. The one nuance worth verifying is attack vector: AV:N is only realistic when the consuming application ingests untrusted YAML from a network source; for tools that parse only local/trusted config files the practical vector is local and the severity drops. No conflicting data was found - the CVSS, EPSS, and root-cause evidence all agree this is a low-severity availability bug.

Exploit ScenarioDerived

An attacker submits a YAML document containing a literal or folded block scalar with a very long run of empty lines to an application that parses untrusted input with libfyaml 0.9.6. As fy_atom_iter_format() processes each pending line break it calls alloca() again inside the per-line loop without releasing prior allocations, so stack usage grows cumulatively until it exceeds the process stack limit and the parser crashes with SIGSEGV. No public exploit code is identified, but the upstream regression test (block_scalar_many_empty_lines, 4096 empty lines) effectively demonstrates the trigger.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 25, 2026

Stack exhaustion in libfyaml 0.9.6 allows a crafted YAML document to crash the process that parses it, producing a denial of service. When fy_atom_iter_format() formats a literal or folded block scalar containing a long run of blank lines, it repeatedly calls alloca() inside a per-line loop; because alloca() memory is only reclaimed when the function returns, the stack grows cumulatively until the process stack limit is exceeded and SIGSEGV occurs. Exploitation is unauthenticated but requires user/application interaction (UI:R) - the target application must actually parse attacker-influenced YAML - and impact is limited to the single parsing process. No public exploit code has been identified at time of analysis, EPSS is low at 0.15% (4th percentile), and the upstream project has published fixing commits referenced from issue #315.

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed - apply the fixes in libfyaml commits 20502068902d58c076da873117985798df2c7e74 and 93741a7c9331da9da65ef7a25f2d7d6a817a1c29 (referenced from https://github.com/pantoniou/libfyaml/issues/315), which replace the in-loop alloca() with a 16-entry in-place array plus realloc()-backed heap growth, or upgrade to a downstream release that incorporates them. If rebuilding is not immediately possible, the most effective compensating control is to bound what reaches the parser: enforce a maximum size and a maximum number of consecutive blank lines on any YAML input accepted from untrusted sources before it is handed to libfyaml, rejecting oversized documents at the application boundary - the trade-off is that legitimate large documents with long block scalars will also be refused, so the limit must be tuned to real workloads. Running the parsing step in a separate, short-lived child process with a reduced stack limit (for example ulimit -s) or inside a memory- and stack-capped sandbox will convert the SIGSEGV into an isolated child failure rather than a service crash, at the cost of added process-management overhead and possible loss of the in-flight request. Where untrusted YAML parsing is not actually needed, disable that input path entirely or restrict it to trusted, locally authored configuration files; note that the crash affects only the parsing process, so no data loss or code execution follows the exception. Monitor the vendor repository and your distribution's advisory channel for a tagged release containing the fix, since no fixed version number is confirmed in the available data.

Affected VersionsENISA

n/a n/a

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

libfyaml is a C library for parsing and emitting YAML, and the flaw lives in src/lib/fy-atom.c in fy_atom_iter_format(), the routine that renders scalar atoms (including literal '|' and folded '>' block scalars) back into text. The function maintains a dynamically sized array of pending line-break records, and the vulnerable code grew that array with alloca(sizeof(*pending_lb) * pending_lb_size * 2) from inside a per-line loop that runs once for each empty line in the block scalar. alloca() allocates from the current stack frame and is not released until the enclosing function returns, so each iteration permanently consumed stack rather than reusing a single allocation - an unbounded resource consumption pattern classified as CWE-770 (Allocation of Resources Without Limits or Throttling). A sufficiently long run of blank lines therefore grows the stack past the process limit and triggers SIGSEGV during parsing. The upstream fix removes alloca() from the loop, starting with a 16-entry in-place array and switching to a heap buffer via realloc() when the array outgrows it, freeing the heap block before the function exits; the accompanying regression test (test/libfyaml-test-core.c, block_scalar_many_empty_lines) uses 4096 empty lines, well past the 16-entry in-place threshold, confirming the growth path. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H reflects a network-reachable, low-complexity, unauthenticated input-triggered crash with high availability impact confined to the vulnerable component (S:U) and no confidentiality or integrity effect.

Know when the next one hits your stack

  • 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 6.5 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Availability-only crash of the parsing process (A:H, C:N/I:N, S:U); network-reachable via untrusted YAML but requires the app to ingest the document (UI:R), no auth (PR:N).

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

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

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

Lifecycle Timeline

2
CVSS changed
Sep 25, 2026 - 17:22 NVD
6.5 (MEDIUM)
CVE Published
Sep 24, 2026 - 14:18 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

libfyaml 0.9.6 contains a stack exhaustion vulnerability in fy_atom_iter_format(). When processing a specially crafted YAML document containing a very large literal or folded block scalar, the function repeatedly grows an internal buffer using alloca() inside a loop. The allocated stack memory is not released until the function returns, causing cumulative stack growth that can exceed the process stack limit and result in SIGSEGV and denial of service.

Threat Intelligence Overview

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Low
niche C YAML parsing library, modest adoption versus mainstream libyaml
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Vendor StatusVendor

SUSE

Severity: Moderate

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