{"id":"CVE-2020-15866","aliases":["ALPINE-CVE-2020-15866","DEBIAN-CVE-2020-15866","DLA-2996-1","EUVD-2020-7847","GHSA-4f9x-p86g-x88m","UBUNTU-CVE-2020-15866"],"status":"published","title":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in...","description":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in vm.c because of incorrect VM stack handling. It can be triggered via the stack_copy function.","severity":{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-11","score":0.02127,"percentile":0.82175,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-787"],"published":"2020-07-21T14:54:09Z","modified":"2026-11-03T06:32:23Z","fixes":[{"ecosystem":"Alpine:v3.13","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.14","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.15","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.16","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.17","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.18","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.19","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.20","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.21","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.22","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.23","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.24","package":"mruby","fixed_in":["2.1.2-r0"],"sources":["osv"]},{"ecosystem":"Debian:12","package":"mruby","fixed_in":["2.1.2-1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"mruby","fixed_in":["2.1.2-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"mruby","fixed_in":["2.1.2-1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Alpine:v3.13","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.14","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.15","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.16","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.17","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.18","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.19","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.20","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.21","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.22","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.23","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.24","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-r0"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-1"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.2-1"}]}]},{"source":"osv","ecosystem":"Debian:9","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.2.0+20161228+git30d5424a-1+deb9u1"}]}],"versions":["1.2.0+20161228+git30d5424a-1"],"bundled":6},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.0+20150817+gita1731254-1","1.1.0+20150906+git1cbbb7e1-1","1.2.0+20160315+git4f20d58a-1"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.3.0-1","1.3.0+20170925+git38185028-1","1.3.0+20171029+git77edafb0-1","1.4.0-1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.0-1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.1.2-3","3.0.0-1","3.0.0-3"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.2.0-1","3.2.0-2"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.3.0-1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.4.0-2","3.4.0-3","4.0.0-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"mruby","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.3.0-1","3.4.0-2"]}],"products":[{"vendor":"debian","product":"debian_linux"},{"vendor":"mruby","product":"mruby"}],"references":[{"url":"https://github.com/mruby/mruby/issues/5042","tags":["x_refsource_MISC","x_transferred","Exploit","Third Party Advisory","evidence","report"]},{"url":"https://lists.debian.org/debian-lts-announce/2022/05/msg00006.html","tags":["mailing-list","x_refsource_MLIST","x_transferred","Mailing List","Third Party Advisory","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-15866"},{"url":"https://github.com/advisories/GHSA-4f9x-p86g-x88m"},{"url":"https://security.alpinelinux.org/vuln/CVE-2020-15866","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2020-15866","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2020-15866","tags":["report"]},{"url":"https://github.com/mruby/mruby/commit/6334949ba69363cb909a57d6871895bd6d98bb6b","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2020-15866","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2020-15866","description":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in vm.c because of incorrect VM stack handling. It can be triggered via the stack_copy function.","status":"published","published":"2020-07-21T14:54:09Z","modified":"2024-08-04T13:30:22.739Z","updated_at":"2026-11-02T14:35:49.879248Z"}],"euvd":[{"id":"EUVD-2020-7847","description":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in vm.c because of incorrect VM stack handling. It can be triggered via the stack_copy function.","status":"published","published":"2020-07-21T14:54:09Z","modified":"2024-08-04T13:30:22Z","updated_at":"2026-11-03T03:07:29.843843Z"}],"ghsa":[{"id":"GHSA-4f9x-p86g-x88m","title":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in...","description":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in vm.c because of incorrect VM stack handling. It can be triggered via the stack_copy function.","status":"published","published":"2022-05-24T17:24:01Z","modified":"2023-01-29T05:03:35Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-787"],"updated_at":"2026-11-02T14:45:21.37961Z"}],"nvd":[{"id":"CVE-2020-15866","description":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in vm.c because of incorrect VM stack handling. It can be triggered via the stack_copy function.","status":"published","published":"2020-07-21T15:15:14.537Z","modified":"2026-06-17T02:57:19.243Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-787"],"updated_at":"2026-11-02T14:06:10.086163Z"}],"osv":[{"id":"ALPINE-CVE-2020-15866","description":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in vm.c because of incorrect VM stack handling. It can be triggered via the stack_copy function.","status":"published","published":"2020-07-21T15:15:14.537Z","modified":"2026-11-03T06:32:23.982426771Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-03T07:17:57.723967Z"},{"id":"CVE-2020-15866","description":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in vm.c because of incorrect VM stack handling. It can be triggered via the stack_copy function.","status":"published","published":"2020-07-21T15:15:14.537Z","modified":"2026-10-20T10:51:56.492957197Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:44:14.828228Z"},{"id":"DEBIAN-CVE-2020-15866","description":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in vm.c because of incorrect VM stack handling. It can be triggered via the stack_copy function.","status":"published","published":"2020-07-21T15:15:14.537Z","modified":"2026-10-26T12:02:27.192291763Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:45:33.384087Z"},{"id":"UBUNTU-CVE-2020-15866","description":"mruby through 2.1.2-rc has a heap-based buffer overflow in the mrb_yield_with_class function in vm.c because of incorrect VM stack handling. It can be triggered via the stack_copy function.","status":"published","published":"2020-07-21T15:15:00Z","modified":"2026-10-17T12:56:11.537346309Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:54:23.344108Z"},{"id":"DLA-2996-1","title":"mruby - security update","status":"published","published":"2022-05-06T00:00:00Z","modified":"2026-03-09T01:23:12.964589Z","updated_at":"2026-11-02T15:46:11.189256Z"}]}}
