{"id":"CVE-2018-20993","aliases":["EUVD-2021-1760","GHSA-hv87-47h9-jcvq","RUSTSEC-2018-0006","UBUNTU-CVE-2018-20993"],"status":"published","title":"Uncontrolled recursion in rust-yaml","description":"An issue was discovered in the yaml-rust crate before 0.4.1 for Rust. There is uncontrolled recursion during deserialization.","severity":{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-07","score":0.01411,"percentile":0.72837,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-674"],"published":"2018-09-17T12:00:00Z","modified":"2026-10-24T10:31:00Z","fixes":[{"ecosystem":"crates.io","package":"yaml-rust","fixed_in":["0.4.1"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"yaml-rust","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.4.1"}]}]},{"source":"osv","ecosystem":"crates.io","package":"yaml-rust","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.4.1"}]}]},{"source":"osv","ecosystem":"crates.io","package":"yaml-rust","ranges":[{"type":"SEMVER","events":[{"introduced":"0.0.0-0"},{"fixed":"0.4.1"}]}]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"rust-yaml-rust","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.4.2-1","0.4.3-1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"rust-yaml-rust","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.4.3-1","0.4.5-1"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"rust-yaml-rust","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.4.5-1"]}],"products":[{"vendor":"yaml-rust_project","product":"yaml-rust"}],"references":[{"url":"https://rustsec.org/advisories/RUSTSEC-2018-0006.html","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web","advisory","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2018-20993","tags":["advisory"]},{"url":"https://github.com/chyh1990/yaml-rust/pull/109","tags":["web"]},{"url":"https://github.com/chyh1990/yaml-rust/commit/d61b49cb90391fc4f7f72a1abe597476c8651a07","tags":["web"]},{"url":"https://github.com/advisories/GHSA-hv87-47h9-jcvq"},{"url":"https://github.com/chyh1990/yaml-rust","tags":["package"]},{"url":"https://crates.io/crates/yaml-rust","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2018-20993","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2018-20993","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2018-20993","description":"An issue was discovered in the yaml-rust crate before 0.4.1 for Rust. There is uncontrolled recursion during deserialization.","status":"published","published":"2019-08-26T12:32:43Z","modified":"2024-08-05T12:19:27.131Z","updated_at":"2026-11-02T14:34:59.872731Z"}],"euvd":[{"id":"EUVD-2021-1760","description":"An issue was discovered in the yaml-rust crate before 0.4.1 for Rust. There is uncontrolled recursion during deserialization.","status":"published","published":"2019-08-26T12:32:43Z","modified":"2024-08-05T12:19:27Z","updated_at":"2026-11-03T02:39:28.311281Z"}],"ghsa":[{"id":"GHSA-hv87-47h9-jcvq","title":"Uncontrolled recursion in rust-yaml","description":"Affected versions of this crate did not prevent deep recursion while deserializing data structures. This allows an attacker to make a YAML file with deeply nested structures that causes an abort while deserializing it. The flaw was corrected by checking the recursion depth.","status":"published","published":"2021-08-25T20:43:13Z","modified":"2023-06-13T22:23:09Z","cvss":[{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-674"],"updated_at":"2026-11-02T14:36:54.225318Z"}],"nvd":[{"id":"CVE-2018-20993","description":"An issue was discovered in the yaml-rust crate before 0.4.1 for Rust. There is uncontrolled recursion during deserialization.","status":"published","published":"2019-08-26T13:15:11.18Z","modified":"2026-06-17T01:53:53.91Z","cvss":[{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"primary"},{"version":"2.0","score":5,"vector":"AV:N/AC:L/Au:N/C:N/I:N/A:P","level":"medium","assessor":"primary"}],"cwes":["CWE-674"],"updated_at":"2026-11-02T14:04:59.278647Z"}],"osv":[{"id":"CVE-2018-20993","description":"An issue was discovered in the yaml-rust crate before 0.4.1 for Rust. There is uncontrolled recursion during deserialization.","status":"published","published":"2019-08-26T13:15:11.18Z","modified":"2026-10-24T10:31:00.72421914Z","cvss":[{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:44:09.145458Z"},{"id":"GHSA-hv87-47h9-jcvq","title":"Uncontrolled recursion in rust-yaml","description":"Affected versions of this crate did not prevent deep recursion while deserializing data structures. This allows an attacker to make a YAML file with deeply nested structures that causes an abort while deserializing it. The flaw was corrected by checking the recursion depth.","status":"published","published":"2021-08-25T20:43:13Z","modified":"2023-11-08T04:00:13.493088Z","cvss":[{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-674"],"updated_at":"2026-11-02T15:46:49.621585Z"},{"id":"RUSTSEC-2018-0006","title":"Uncontrolled recursion leads to abort in deserialization","description":"Affected versions of this crate did not prevent deep recursion while\ndeserializing data structures.\n\nThis allows an attacker to make a YAML file with deeply nested structures\nthat causes an abort while deserializing it.\n\nThe flaw was corrected by checking the recursion depth.\n\nNote: `clap 2.33` is not affected by this because it uses `yaml-rust`\nin a way that doesn't trigger the vulnerability. More specifically:\n\n1. The input to the YAML parser is always trusted - is included at compile\ntime via `include_str!`.\n\n2. The nesting level is never deep enough to trigger the overflow in practice\n(at most 5).","status":"published","published":"2018-09-17T12:00:00Z","modified":"2023-11-08T04:00:13.493088Z","cvss":[{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:39.492624Z"},{"id":"UBUNTU-CVE-2018-20993","description":"An issue was discovered in the yaml-rust crate before 0.4.1 for Rust. There is uncontrolled recursion during deserialization.","status":"published","published":"2019-08-26T13:15:00Z","modified":"2026-01-20T17:01:15.455918Z","cvss":[{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:54:17.91743Z"}]}}
