Skip to main content

YAML::Syck CVE-2026-13713

| EUVDEUVD-2026-45052 MEDIUM
Use After Free (CWE-416)
2026-07-16 CPANSec GHSA-p3p9-6pr6-mr9m
6.2
CVSS 3.1 · Vendor: CPANSec
View

Attack ChainAIDerived

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

  1. Recon
    Identify Perl service parsing user-supplied YAML
  2. Delivery
    Craft document redefining anchor name (7 bytes minimum)
  3. Exploit
    Submit payload via application input channel
  4. Install
    libsyck frees anchor node while it remains on value stack
  5. C2
    syck_hdlr_add_node triggers double-free of same 48-byte chunk
  6. Execute
    Allocator detects corruption and aborts Perl interpreter
  7. Impact
    Service process crashes (DoS)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Privilege Escalation

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

Exploitation Conditions

Exploitation requires that the target process calls YAML::Syck's Load() or LoadFile() on attacker-controlled YAML input containing a redefined anchor name (e.g., any document where the same anchor label appears twice, such as '- &a' followed by '&a' within the same stream). No special YAML::Syck configuration flags, non-default settings, or specific Perl version are required - the crash is triggered on the default Load() code path with no module options. What limits exploitation: the impact is denial-of-service only (interpreter abort), with no evidence of code execution; and the attacker must be able to supply YAML content to a process using YAML::Syck, which depends on the consuming application's input handling. CVSS PR:N confirms no authentication is required at the library level, though the consuming application may enforce its own authentication layer. The CVSS AV:L assignment reflects the library-baseline interpretation; applications that accept YAML over a network effectively expose this as a remotely triggerable crash with no privileges required.

Impact

The NVD-assigned CVSS 3.1 score of 6.2 (AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) reflects a library-baseline local attack vector and availability-only impact. The AV:L assignment is the conservative per-specification interpretation for a parsing library that does not itself bind to a network socket; however, in the predominant real-world deployment pattern - Perl web applications and API services passing user-supplied YAML bodies to Load() - the effective attack vector is network-reachable with no authentication required, materially increasing practical risk above the 6.2 baseline. Attack complexity is genuinely low: no heap grooming, timing manipulation, or information leak is required; redefinition of any anchor name deterministically triggers the double-free. No EPSS data was provided in the source intelligence; no CISA KEV listing exists, so confirmed active exploitation is unconfirmed at time of analysis. POC trigger inputs (e.g., the 7-byte document redefining an anchor) are embedded in the project's public test suite and CI workflow, making reproduction trivial for any researcher. Impact is strictly denial-of-service - there is no evidence of code execution potential from this double-free path. The CVSS AV:L vs. real-world AV:N discrepancy is the key signal: security teams operating Perl web services should treat effective exploitability as higher than the published score implies.

Exploit ScenarioDerived

An attacker submits a crafted YAML payload - as short as seven bytes, containing a document that redefines an anchor name - to a web application or API endpoint that parses the request body using YAML::Syck's Load() function. The Perl interpreter aborts due to the double-free detected by the allocator, crashing the worker process and producing a denial of service. Because the trigger is deterministic and requires no heap shaping, the attacker can repeat the request at will to sustain downtime; the trigger input is publicly available in the project's test suite (t/cve-2026-13713-anchor-node-uaf.t).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Jul 17, 2026

YAML::Syck before version 1.47 crashes the Perl interpreter when parsing a YAML document that redefines an anchor name, due to a use-after-free and double-free in the bundled libsyck C library. Any caller invoking Load() or LoadFile() on attacker-controlled YAML - a common pattern in Perl web frameworks and data-pipeline tooling - is exposed to a denial-of-service condition that aborts the interpreter process. No public exploit beyond the CPANSec-confirmed 7-byte trigger document exists and no CISA KEV listing is present, but the trivially short trigger makes reliable reproduction straightforward.

RemediationAI

Upgrade YAML::Syck to version 1.47 or later, available on CPAN at https://metacpan.org/release/TODDR/YAML-Syck-1.47/changes; this is the primary and recommended fix. The upstream patch is available at https://github.com/toddr/YAML-Syck/commit/44c90a109ec3215ee7ce747bd11209835e123d8b.patch for environments that build from source. If immediate upgrade is not feasible and the application processes untrusted YAML, consider switching the serialization stack to a pure-Perl YAML parser such as YAML::PP that does not share the libsyck C backend - note this may introduce API and compatibility differences that require application-level testing. Alternatively, implement an input-layer pre-filter that rejects YAML documents containing anchor redefinitions before they reach Load() or LoadFile(); this is complex to implement correctly at the application layer and should be treated as a temporary stopgap only. Do not expose Load() or LoadFile() to untrusted input without one of these mitigations in place.

Affected VersionsENISA

YAML::Syck 0 <1.47

Affected Packages

euvd yaml_syck fix: 1.47

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

YAML::Syck is a Perl YAML processing module (CPE: cpe:2.3:a:toddr:yaml::syck:*:*:*:*:*:*:*:*) that bundles libsyck, a C implementation of the YAML 1.0 specification. The defect resides in handler.c within syck_hdlr_add_anchor() and syck_hdlr_remove_anchor(). When a YAML anchor name is redefined or removed during parse, both functions call syck_free_node() to release the evicted node. Because that node may still be live on the parser's internal value stack, syck_hdlr_add_node() reaches it again and frees the same 48-byte chunk a second time - a classic CWE-416 use-after-free that degenerates into a double-free on the default code path. On a standard glibc build the allocator detects the corruption and aborts the interpreter. The fix in version 1.47 introduces syck_retire_node(), which inserts evicted nodes into a new st_table *retired field on the SyckParser struct and defers their release to parser teardown, eliminating the window during which the stack still holds a reference to the freed node. The same commit also fixes a signed-char OOB indexing issue in the base64 decoder (emitter.c) and at least two additional anchor-related memory-safety defects (CVE-2026-57075, CVE-2026-57076, CVE-2026-57077).

Know when Yaml 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 (CPANSec) PRIMARY 6.2 MEDIUM
AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Input-driven crash with no config prerequisite; network-received YAML routinely reaches Load() in practice, so AV:N overrides the library-baseline AV:L; impact is availability-only.

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

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

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

Lifecycle Timeline

2
CVSS changed
Jul 17, 2026 - 14:22 NVD
6.2 (MEDIUM)
CVE Published
Jul 16, 2026 - 21:35 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

YAML::Syck versions before 1.47 for Perl allow a use-after-free and double-free via an anchor node freed while still on the parser value stack.

In the bundled libsyck, when an anchor name is redefined or removed, syck_hdlr_add_anchor and syck_hdlr_remove_anchor free the node stored under that name with syck_free_node. That node can still be live on the parser's value stack, so syck_hdlr_add_node reaches it again and frees it a second time. On a normal build the 48-byte node chunk is freed twice and the interpreter aborts. Anchors need no special flags, so this is reached on the default Load path, and a 7-byte document that redefines an anchor triggers it.

Any caller that runs Load or LoadFile on an untrusted document that redefines an anchor mid-parse crashes the interpreter, a denial of service.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Low
niche Perl YAML library, limited enterprise footprint
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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 Yes
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
Defer
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

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

More in Yaml

View all
CVE-2023-2251 HIGH POC
7.5 Apr 24

Uncaught Exception in GitHub repository eemeli/yaml prior to 2.0.0-5. Rated high severity (CVSS 7.5), this vulnerability

CVE-2022-28948 HIGH POC
7.5 May 19

An issue in the Unmarshal function in Go-Yaml v3 causes the program to crash when attempting to deserialize invalid inpu

CVE-2026-57075 CRITICAL
9.1 Jul 16

Out-of-bounds read in the Perl module YAML::Syck before 1.47 lets a remote attacker leak adjacent process memory by feed

CVE-2026-4177 CRITICAL
9.1 Mar 16

A critical heap buffer overflow vulnerability exists in YAML::Syck through version 1.36 for Perl, allowing remote attack

CVE-2026-57076 HIGH
7.8 Jul 16

Heap use-after-free in YAML::Syck for Perl before version 1.47 lets a crafted YAML document corrupt parser memory when i

CVE-2026-57077 HIGH
7.7 Jul 16

Out-of-bounds heap read in YAML::Syck before 1.47 for Perl lets an attacker who controls a parsed YAML document trigger

CVE-2022-3064 HIGH
7.5 Dec 27

Parsing malicious or large YAML documents can consume excessive amounts of CPU or memory. Rated high severity (CVSS 7.5)

CVE-2026-5089 HIGH
7.3 May 12

Buffer underflow in YAML::Syck for Perl versions before 1.38 allows remote unauthenticated attackers to trigger out-of-b

CVE-2025-11683 MEDIUM
6.5 Jul 17

Out-of-bounds memory read in YAML::Syck's bundled libsyck C library for Perl exposes any application calling Load() or L

CVE-2012-1152 MEDIUM
5.0 Sep 09

Multiple format string vulnerabilities in the error reporting functionality in the YAML::LibYAML (aka YAML-LibYAML and p

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
openSUSE Tumbleweed Fixed

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