{"api_version":"1","generated_at":"2026-10-22T19:07:31+00:00","cve":"CVE-2019-25777","urls":{"html":"https://cve.report/CVE-2019-25777","api":"https://cve.report/api/cve/CVE-2019-25777.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2019-25777","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2019-25777"},"summary":{"title":"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","description":"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.\n\nA 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.\n\nA 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.","state":"PUBLISHED","assigner":"CPANSec","published_at":"2026-10-05 07:16:29","updated_at":"2026-10-06 17:17:09"},"problem_types":["CWE-502","CWE-914","CWE-914 CWE-914 Improper Control of Dynamically-Identified Variables","CWE-502 CWE-502 Deserialization of Untrusted Data"],"metrics":[{"version":"3.1","source":"ADP","type":"DECLARED","score":"7.3","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","data":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"LOW","baseScore":7.3,"baseSeverity":"HIGH","confidentialityImpact":"LOW","integrityImpact":"LOW","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","version":"3.1"}},{"version":"3.1","source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","type":"Secondary","score":"7.3","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","baseScore":7.3,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"LOW","integrityImpact":"LOW","availabilityImpact":"LOW"}}],"references":[{"url":"http://www.openwall.com/lists/oss-security/2026/10/05/7","name":"http://www.openwall.com/lists/oss-security/2026/10/05/7","refsource":"af854a3a-2127-422b-91ae-364da2661108","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/ingydotnet/yaml-pm/issues/212","name":"https://github.com/ingydotnet/yaml-pm/issues/212","refsource":"9b29abf9-4ab0-4765-b253-1875cd9b441e","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://metacpan.org/release/TINITA/YAML-1.28/changes","name":"https://metacpan.org/release/TINITA/YAML-1.28/changes","refsource":"9b29abf9-4ab0-4765-b253-1875cd9b441e","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/ingydotnet/yaml-pm/commit/bace96b5e6661d521c7c515c94a09e081c911fce.patch","name":"https://github.com/ingydotnet/yaml-pm/commit/bace96b5e6661d521c7c515c94a09e081c911fce.patch","refsource":"9b29abf9-4ab0-4765-b253-1875cd9b441e","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2019-25777","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2019-25777","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[],"timeline":[{"source":"CNA","time":"2019-04-27T00:00:00.000Z","lang":"en","value":"Issue reported."},{"source":"CNA","time":"2019-04-27T00:00:00.000Z","lang":"en","value":"Version 1.27_001 released with fix."},{"source":"CNA","time":"2019-04-28T00:00:00.000Z","lang":"en","value":"Version 1.28 released with fix."},{"source":"CNA","time":"2022-06-27T00:00:00.000Z","lang":"en","value":"Issue added as CPANSA-YAML-2019-01 in the CPAN::Audit database."},{"source":"CNA","time":"2026-09-21T00:00:00.000Z","lang":"en","value":"CVE number reserved."}],"solutions":[{"source":"CNA","title":"","value":"Upgrade to YAML 1.28 or later.","time":"","lang":"en"}],"workarounds":[{"source":"CNA","title":"","value":"For deployments that cannot upgrade to YAML 1.28, set $YAML::LoadBlessed = 0 before loading untrusted input. The option exists from YAML 1.25 and gates glob loading too.","time":"","lang":"en"}],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2019","cve_id":"25777","cve":"CVE-2019-25777","epss":"0.002210000","percentile":"0.115470000","score_date":"2026-10-06","updated_at":"2026-10-07 00:14:54"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"providerMetadata":{"dateUpdated":"2026-10-05T18:10:19.164Z","orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE"},"references":[{"url":"http://www.openwall.com/lists/oss-security/2026/10/05/7"}],"title":"CVE Program Container"},{"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"LOW","baseScore":7.3,"baseSeverity":"HIGH","confidentialityImpact":"LOW","integrityImpact":"LOW","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","version":"3.1"}},{"other":{"content":{"id":"CVE-2019-25777","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","timestamp":"2026-10-06T16:58:07.558999Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-10-06T16:58:19.261Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"collectionURL":"https://cpan.org/modules","defaultStatus":"unaffected","modules":["YAML"],"packageName":"YAML","packageURL":"pkg:cpan/YAML","programFiles":["lib/YAML/Types.pm"],"programRoutines":[{"name":"YAML::Type::glob::yaml_load"}],"repo":"https://github.com/ingydotnet/yaml-pm","versions":[{"lessThan":"1.27_001","status":"affected","version":"0","versionType":"custom"}]}],"descriptions":[{"lang":"en","value":"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.\n\nA 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.\n\nA 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."}],"problemTypes":[{"descriptions":[{"cweId":"CWE-914","description":"CWE-914 Improper Control of Dynamically-Identified Variables","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-502","description":"CWE-502 Deserialization of Untrusted Data","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-10-05T06:50:17.532Z","orgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","shortName":"CPANSec"},"references":[{"tags":["issue-tracking"],"url":"https://github.com/ingydotnet/yaml-pm/issues/212"},{"tags":["patch"],"url":"https://github.com/ingydotnet/yaml-pm/commit/bace96b5e6661d521c7c515c94a09e081c911fce.patch"},{"tags":["release-notes"],"url":"https://metacpan.org/release/TINITA/YAML-1.28/changes"}],"solutions":[{"lang":"en","value":"Upgrade to YAML 1.28 or later."}],"source":{"discovery":"UNKNOWN"},"timeline":[{"lang":"en","time":"2019-04-27T00:00:00.000Z","value":"Issue reported."},{"lang":"en","time":"2019-04-27T00:00:00.000Z","value":"Version 1.27_001 released with fix."},{"lang":"en","time":"2019-04-28T00:00:00.000Z","value":"Version 1.28 released with fix."},{"lang":"en","time":"2022-06-27T00:00:00.000Z","value":"Issue added as CPANSA-YAML-2019-01 in the CPAN::Audit database."},{"lang":"en","time":"2026-09-21T00:00:00.000Z","value":"CVE number reserved."}],"title":"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","workarounds":[{"lang":"en","value":"For deployments that cannot upgrade to YAML 1.28, set $YAML::LoadBlessed = 0 before loading untrusted input. The option exists from YAML 1.25 and gates glob loading too."}],"x_generator":{"engine":"cpansec-cna-tool 0.1"}}},"cveMetadata":{"assignerOrgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","assignerShortName":"CPANSec","cveId":"CVE-2019-25777","datePublished":"2026-10-05T06:50:17.532Z","dateReserved":"2026-09-21T21:17:21.642Z","dateUpdated":"2026-10-06T16:58:19.261Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-10-05 07:16:29","lastModifiedDate":"2026-10-06 17:17:09","problem_types":["CWE-502","CWE-914","CWE-914 CWE-914 Improper Control of Dynamically-Identified Variables","CWE-502 CWE-502 Deserialization of Untrusted Data"],"metrics":{"cvssMetricV31":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","baseScore":7.3,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"LOW","integrityImpact":"LOW","availabilityImpact":"LOW"},"exploitabilityScore":3.9,"impactScore":3.4}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-10-06T16:58:07.558999Z","id":"CVE-2019-25777","options":[{"exploitation":"none"},{"automatable":"yes"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2019","CveId":"25777","Ordinal":"1","Title":"YAML versions before 1.27_001 for Perl allow a loaded perl/glob ","CVE":"CVE-2019-25777","Year":"2019"},"notes":[{"CveYear":"2019","CveId":"25777","Ordinal":"1","NoteData":"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.\n\nA 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.\n\nA 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.","Type":"Description","Title":"YAML versions before 1.27_001 for Perl allow a loaded perl/glob "}]}}}