YAML versions before 1.30 for Perl allow a loaded document to trigger the DESTROY method of...

zetlyn/cve-ghsa vulnerability ghsa GHSA-c454-fc94-q86x cve CVE-2017-20285 known 2026-10-05

https://github.com/advisories/GHSA-c454-fc94-q86x

Properties

cweCWE-470
receipt
Source
GitHub advisories
Its words
CWE-470
Read by
field:cwes[].cwe_id
Said since
2026-10-05 12:20 UTC
Last answered
2026-10-05 12:22 UTC
Original
open at the source
What the source handed over
{
  "comments": 0,
  "credits": [],
  "cve_id": "CVE-2017-20285",
  "cvss": {
    "score": null,
    "vector_string": null
  },
  "cvss_severities": {
    "cvss_v3": {
      "score": 0.0,
      "vector_string": null
    },
    "cvss_v4": {
      "score": 0.0,
      "vector_string": null
    }
  },
  "cwes": [
    {
      "cwe_id": "CWE-470",
      "name": "Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')"
    }
  ],
  "description": "YAML versions before 1.30 for Perl allow a loaded document to trigger the DESTROY method of arbitrary classes.\n\nA perl/hash:Class tag blesses a hash into the class it names. The document supplies the object's fields, and Perl calls DESTROY when it goes out of scope.\n\nWhat DESTROY does depends on the classes the process has loaded. With File::Temp::Dir from core Perl, it can delete a directory tree the document names.",
  "ghsa_id": "GHSA-c454-fc94-q86x",
  "github_reviewed_at": null,
  "html_url": "https://github.com/advisories/GHSA-c454-fc94-q86x",
  "identifiers": [
    {
      "type": "GHSA",
      "value": "GHSA-c454-fc94-q86x"
    },
    {
      "type": "CVE",
      "value": "CVE-2017-20285"
    }
  ],
  "nvd_published_at": "2026-10-05T07:16:29Z",
  "published_at": "2026-10-05T09:31:51Z",
  "references": [
    "https://nvd.nist.gov/vuln/detail/CVE-2017-20285",
    "https://github.com/ingydotnet/yaml-pm/issues/176",
    "https://github.com/ingydotnet/yaml-pm/commit/471314bbdcbd62077eea32755929122aa8bd00a3.patch",
    "https://github.com/ingydotnet/yaml-pm/commit/7736f38bd02e4f9f77d5468721e3be3d7b34a8ec.patch",
    "https://metacpan.org/release/TINITA/YAML-1.30/changes",
    "https://github.com/advisories/GHSA-c454-fc94-q86x"
  ],
  "repository_advisory_url": null,
  "severity": "unknown",
  "source_code_location": "",
  "summary": "YAML versions before 1.30 for Perl allow a loaded document to trigger the DESTROY method of...",
  "type": "unreviewed",
  "updated_at": "2026-10-05T09:31:56Z",
  "url": "https://api.github.com/advisories/GHSA-c454-fc94-q86x",
  "vulnerabilities": [],
  "withdrawn_at": null
}
severityunknown
receipt
Source
GitHub advisories
Its words
unknown
Read by
field:severity
Said since
2026-10-05 12:20 UTC
Last answered
2026-10-05 12:22 UTC
Original
open at the source
What the source handed over
{
  "comments": 0,
  "credits": [],
  "cve_id": "CVE-2017-20285",
  "cvss": {
    "score": null,
    "vector_string": null
  },
  "cvss_severities": {
    "cvss_v3": {
      "score": 0.0,
      "vector_string": null
    },
    "cvss_v4": {
      "score": 0.0,
      "vector_string": null
    }
  },
  "cwes": [
    {
      "cwe_id": "CWE-470",
      "name": "Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')"
    }
  ],
  "description": "YAML versions before 1.30 for Perl allow a loaded document to trigger the DESTROY method of arbitrary classes.\n\nA perl/hash:Class tag blesses a hash into the class it names. The document supplies the object's fields, and Perl calls DESTROY when it goes out of scope.\n\nWhat DESTROY does depends on the classes the process has loaded. With File::Temp::Dir from core Perl, it can delete a directory tree the document names.",
  "ghsa_id": "GHSA-c454-fc94-q86x",
  "github_reviewed_at": null,
  "html_url": "https://github.com/advisories/GHSA-c454-fc94-q86x",
  "identifiers": [
    {
      "type": "GHSA",
      "value": "GHSA-c454-fc94-q86x"
    },
    {
      "type": "CVE",
      "value": "CVE-2017-20285"
    }
  ],
  "nvd_published_at": "2026-10-05T07:16:29Z",
  "published_at": "2026-10-05T09:31:51Z",
  "references": [
    "https://nvd.nist.gov/vuln/detail/CVE-2017-20285",
    "https://github.com/ingydotnet/yaml-pm/issues/176",
    "https://github.com/ingydotnet/yaml-pm/commit/471314bbdcbd62077eea32755929122aa8bd00a3.patch",
    "https://github.com/ingydotnet/yaml-pm/commit/7736f38bd02e4f9f77d5468721e3be3d7b34a8ec.patch",
    "https://metacpan.org/release/TINITA/YAML-1.30/changes",
    "https://github.com/advisories/GHSA-c454-fc94-q86x"
  ],
  "repository_advisory_url": null,
  "severity": "unknown",
  "source_code_location": "",
  "summary": "YAML versions before 1.30 for Perl allow a loaded document to trigger the DESTROY method of...",
  "type": "unreviewed",
  "updated_at": "2026-10-05T09:31:56Z",
  "url": "https://api.github.com/advisories/GHSA-c454-fc94-q86x",
  "vulnerabilities": [],
  "withdrawn_at": null
}

Text

YAML versions before 1.30 for Perl allow a loaded document to trigger the DESTROY method of... YAML versions before 1.30 for Perl allow a loaded document to trigger the DESTROY method of arbitrary classes. A perl/hash:Class tag blesses a hash into the class it names. The document supplies the object's fields, and Perl calls DESTROY when it goes out of scope. What DESTROY does depends on the classes the process has loaded. With File::Temp::Dir from core Perl, it can delete a directory tree the document names.