Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify Perl service parsing user-supplied YAML
-
DeliveryCraft document redefining anchor name (7 bytes minimum)
-
ExploitSubmit payload via application input channel
-
Installlibsyck frees anchor node while it remains on value stack
-
C2syck_hdlr_add_node triggers double-free of same 48-byte chunk
-
ExecuteAllocator detects corruption and aborts Perl interpreter
-
ImpactService 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). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
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.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
2DescriptionCVE.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
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
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.
Uncaught Exception in GitHub repository eemeli/yaml prior to 2.0.0-5. Rated high severity (CVSS 7.5), this vulnerability
An issue in the Unmarshal function in Go-Yaml v3 causes the program to crash when attempting to deserialize invalid inpu
Out-of-bounds read in the Perl module YAML::Syck before 1.47 lets a remote attacker leak adjacent process memory by feed
A critical heap buffer overflow vulnerability exists in YAML::Syck through version 1.36 for Perl, allowing remote attack
Heap use-after-free in YAML::Syck for Perl before version 1.47 lets a crafted YAML document corrupt parser memory when i
Out-of-bounds heap read in YAML::Syck before 1.47 for Perl lets an attacker who controls a parsed YAML document trigger
Parsing malicious or large YAML documents can consume excessive amounts of CPU or memory. Rated high severity (CVSS 7.5)
Buffer underflow in YAML::Syck for Perl versions before 1.38 allows remote unauthenticated attackers to trigger out-of-b
Out-of-bounds memory read in YAML::Syck's bundled libsyck C library for Perl exposes any application calling Load() or L
Multiple format string vulnerabilities in the error reporting functionality in the YAML::LibYAML (aka YAML-LibYAML and p
Same weakness CWE-416 – Use After Free
View allSame technique Denial Of Service
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| openSUSE Tumbleweed | Fixed |
EUVD-2026-45052
GHSA-p3p9-6pr6-mr9m
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB