{"id":"CVE-2026-3449","aliases":["CLSA-2026-1792142145","EUVD-2026-9278","GHSA-vpq2-c234-7xj6","ROOT-APP-NPM-CVE-2026-3449","openSUSE-SU-2026:10290-1","openSUSE-SU-2026:10429-1"],"status":"published","title":"@tootallnate/once vulnerable to Incorrect Control Flow Scoping","description":"Versions of the package @tootallnate/once before 3.0.1 are vulnerable to Incorrect Control Flow Scoping in promise resolving when AbortSignal option is used. The Promise remains in a permanently pending state after the signal is aborted, causing any await or .then() usage to hang indefinitely. This can cause a control-flow leak that can lead to stalled requests, blocked workers, or degraded application availability.","severity":{"version":"4.0","score":4.8,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00128,"percentile":0.02495,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-705"],"published":"2026-03-03T05:00:01Z","modified":"2026-10-28T02:30:37Z","fixes":[{"ecosystem":"npm","package":"@tootallnate/once","fixed_in":["3.0.1","2.0.1"],"sources":["ghsa","osv"]},{"ecosystem":"TuxCare:npm","package":"@tootallnate/once","fixed_in":["2.0.0-tuxcare.3"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"@tootallnate/once","fixed_in":["2.0.1-aikido.1","2.0.0-aikido.2","2.0.1-aikido.2","1.1.2-aikido.1","1.1.2-aikido.2","2.0.0-aikido.3"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"@rootio/tootallnate__once","fixed_in":["2.0.0-root.io.1","2.0.1-root.io.1","2.0.0-root.io.2","2.0.1-root.io.2","1.1.2-root.io.1","1.1.2-root.io.2","2.0.0-root.io.3"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"heroic-games-launcher","fixed_in":["2.20.1-2.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"python-jupyterlab-templates","fixed_in":["0.5.2-4.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"@tootallnate/once","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.0.0"},{"fixed":"3.0.1"}]}]},{"source":"ghsa","ecosystem":"npm","package":"@tootallnate/once","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.1"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"@tootallnate/once","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0-tuxcare.0"},{"fixed":"2.0.0-tuxcare.3"}]}],"versions":["2.0.0","2.0.0-tuxcare.2"]},{"source":"osv","ecosystem":"npm","package":"@tootallnate/once","ranges":[{"type":"SEMVER","events":[{"introduced":"3.0.0"},{"fixed":"3.0.1"}]}]},{"source":"osv","ecosystem":"npm","package":"@tootallnate/once","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.0.1"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"@tootallnate/once","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.1-aikido.1"},{"fixed":"2.0.0-aikido.2"},{"fixed":"2.0.1-aikido.2"},{"fixed":"1.1.2-aikido.1"},{"fixed":"1.1.2-aikido.2"},{"fixed":"2.0.0-aikido.3"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"@rootio/tootallnate__once","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.0-root.io.1"},{"fixed":"2.0.1-root.io.1"},{"fixed":"2.0.0-root.io.2"},{"fixed":"2.0.1-root.io.2"},{"fixed":"1.1.2-root.io.1"},{"fixed":"1.1.2-root.io.2"},{"fixed":"2.0.0-root.io.3"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"heroic-games-launcher","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.20.1-2.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"python-jupyterlab-templates","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.5.2-4.1"}]}]}],"references":[{"url":"https://security.snyk.io/vuln/SNYK-JS-TOOTALLNATEONCE-15250612","tags":["web"]},{"url":"https://github.com/TooTallNate/once/issues/8","tags":["report","web"]},{"url":"https://github.com/TooTallNate/once/commit/b9f43cc5259bee2952d91ad3cdbd201a82df448a","tags":["fix","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-3449","tags":["advisory"]},{"url":"https://github.com/TooTallNate/once/releases/tag/v2.0.1","tags":["web"]},{"url":"https://github.com/advisories/GHSA-vpq2-c234-7xj6"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/3xxx/CVE-2026-3449.json","tags":["advisory"]},{"url":"https://github.com/TooTallNate/once","tags":["package"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2026-3449","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2026-3449","description":"Versions of the package @tootallnate/once before 3.0.1 are vulnerable to Incorrect Control Flow Scoping in promise resolving when AbortSignal option is used. The Promise remains in a permanently pending state after the signal is aborted, causing any await or .then() usage to hang indefinitely. This can cause a control-flow leak that can lead to stalled requests, blocked workers, or degraded application availability.","status":"published","published":"2026-03-03T05:00:01.085Z","modified":"2026-05-04T05:23:47.062Z","cvss":[{"version":"4.0","score":4.8,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P","level":"medium","assessor":"cna"},{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L/E:P","level":"low","assessor":"cna"}],"cwes":["CWE-705"],"updated_at":"2026-11-02T13:49:09.229322Z"}],"euvd":[{"id":"EUVD-2026-9278","description":"Versions of the package @tootallnate/once before 3.0.1 are vulnerable to Incorrect Control Flow Scoping in promise resolving when AbortSignal option is used. The Promise remains in a permanently pending state after the signal is aborted, causing any await or .then() usage to hang indefinitely. This can cause a control-flow leak that can lead to stalled requests, blocked workers, or degraded application availability.","status":"published","published":"2026-03-03T05:00:01Z","modified":"2026-05-04T05:23:47Z","cvss":[{"version":"4.0","score":4.8,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P","level":"medium"}],"updated_at":"2026-11-02T19:05:18.340967Z"}],"ghsa":[{"id":"GHSA-vpq2-c234-7xj6","title":"@tootallnate/once vulnerable to Incorrect Control Flow Scoping","description":"Versions of the package @tootallnate/once before 3.0.1 are vulnerable to Incorrect Control Flow Scoping in promise resolving when AbortSignal option is used. The Promise remains in a permanently pending state after the signal is aborted, causing any await or .then() usage to hang indefinitely. This can cause a control-flow leak that can lead to stalled requests, blocked workers, or degraded application availability.","status":"published","published":"2026-03-03T06:31:14Z","modified":"2026-05-21T16:55:50Z","cvss":[{"version":"4.0","score":1.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P","level":"low"},{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L","level":"low"}],"cwes":["CWE-705"],"updated_at":"2026-11-02T14:40:13.628377Z"}],"nvd":[{"id":"CVE-2026-3449","description":"Versions of the package @tootallnate/once before 3.0.1 are vulnerable to Incorrect Control Flow Scoping in promise resolving when AbortSignal option is used. The Promise remains in a permanently pending state after the signal is aborted, causing any await or .then() usage to hang indefinitely. This can cause a control-flow leak that can lead to stalled requests, blocked workers, or degraded application availability.","status":"published","published":"2026-03-03T05:17:25.017Z","modified":"2026-06-17T10:43:36.317Z","cvss":[{"version":"4.0","score":1.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"low","assessor":"secondary"},{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L","level":"low","assessor":"secondary"}],"cwes":["CWE-705"],"updated_at":"2026-11-02T14:12:07.420927Z"}],"osv":[{"id":"CVE-2026-3449","description":"Versions of the package @tootallnate/once before 3.0.1 are vulnerable to Incorrect Control Flow Scoping in promise resolving when AbortSignal option is used. The Promise remains in a permanently pending state after the signal is aborted, causing any await or .then() usage to hang indefinitely. This can cause a control-flow leak that can lead to stalled requests, blocked workers, or degraded application availability.","status":"published","published":"2026-03-03T05:00:01.085Z","modified":"2026-10-28T02:30:37.949697455Z","cvss":[{"version":"4.0","score":1.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P","level":"low"}],"cwes":["CWE-705"],"updated_at":"2026-11-02T15:45:02.247031Z"},{"id":"GHSA-vpq2-c234-7xj6","title":"@tootallnate/once vulnerable to Incorrect Control Flow Scoping","description":"Versions of the package @tootallnate/once before 3.0.1 are vulnerable to Incorrect Control Flow Scoping in promise resolving when AbortSignal option is used. The Promise remains in a permanently pending state after the signal is aborted, causing any await or .then() usage to hang indefinitely. This can cause a control-flow leak that can lead to stalled requests, blocked workers, or degraded application availability.","status":"published","published":"2026-03-03T06:31:14Z","modified":"2026-09-10T03:51:00.790088103Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L","level":"low"},{"version":"4.0","score":1.9,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P","level":"low"}],"cwes":["CWE-705"],"updated_at":"2026-11-02T15:46:57.694388Z"},{"id":"ROOT-APP-NPM-CVE-2026-3449","title":"CVE-2026-3449 in @tootallnate/once - Patched by Root","description":"Root has patched CVE-2026-3449 in the @tootallnate/once package for Root:npm. Multiple fixed versions available.","status":"published","published":"2026-08-04T14:58:41Z","modified":"2026-08-04T19:30:20.337098305Z","cvss":[{"version":"3.1","score":3.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L","level":"low"}],"updated_at":"2026-11-02T15:53:27.649662Z"},{"id":"CLSA-2026-1792142145","title":"TuxCare security update for @tootallnate/once (1 CVE)","description":"TuxCare rebuilt @tootallnate/once to address 1 CVE. Fixed in 2.0.0-tuxcare.3.","status":"published","published":"2026-10-16T09:15:45Z","modified":"2026-10-16T12:15:03.192157719Z","updated_at":"2026-11-02T15:43:50.949147Z"},{"id":"openSUSE-SU-2026:10290-1","title":"heroic-games-launcher-2.20.1-2.1 on GA media","description":"These are all security issues fixed in the heroic-games-launcher-2.20.1-2.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-03-05T00:00:00Z","modified":"2026-03-23T04:54:39.591508Z","updated_at":"2026-11-02T16:58:38.101535Z"},{"id":"openSUSE-SU-2026:10429-1","title":"jupyter-jupyterlab-templates-0.5.2-4.1 on GA media","description":"These are all security issues fixed in the jupyter-jupyterlab-templates-0.5.2-4.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-03-25T00:00:00Z","modified":"2026-03-26T09:02:56.014151Z","updated_at":"2026-11-02T16:58:38.415593Z"}]}}
