CVE-2019-25777CWE-502CWE-914insecure-deserialization

CVE-2019-25777

High · published October 5, 2026

CVSS v3.1
7.3
EPSS
0%
Percentile
26.2
In the wild
Unconfirmed
What it is

YAML versions before 1.27_001 for Perl allow a loaded perl/glob document to replace any package variable, which can lead to arbitrary code execution.

A perl/glob document names a package and a symbol, and supplies the value assigned to it. Nothing restricts the name, so the target can be @INC or YAML's own load options.

A perl/glob document that sets $YAML::LoadCode or $YAML::UseCode turns on code loading, which is off by default, for every later Load() in the process. A perl/code document is then passed to a string eval, so an attacker who supplies two documents to separate Load() calls in one process can execute arbitrary Perl code.

The record
Technical detail
CVSS v3.1
7.3 · HIGH
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
CVSS v4.0
Not supplied
EPSS
0.00340 · 26.2th percentile
Weaknesses
CWE-502 · Deserialization of Untrusted Data; CWE-914 · Improper Control of Dynamically-Identified Variables
Published
2026-10-05T11:16Z
References (4)
EPSS history
Timeline
  • 07 OCT 03:26Z
    EPSS moved — → 0%
    epss
  • 05 OCT 06:50Z
    YAML versions before 1.27_001 for Perl allow a loaded perl/glob document to replace any package variable, which can lead to arbitrary code execution
    cvelistv5