{"id":"CVE-2026-126410","kind":"vulnerability","aliases":["CVE-2026-126410"],"related":[],"title":"Wasmtime WASI: UDP socket race lets guests send to blocked addresses","description":"Wasmtime's wasmtime-wasi crate 48.0.0 before 48.0.8, 49.0.0 before 49.0.5, and 50.0.0 before 50.0.1 contains a time-of-check/time-of-use race in the wasip3 wasi:sockets udp-socket host implementation that lets guests bypass socket_addr_check send restrictions. A malicious guest can race udp-socket.send against udp-socket.connect to deliver attacker-controlled datagrams to addresses the policy permits only for receiving.","summary":"A time-of-check/time-of-use race in the wasip3 wasi:sockets UDP implementation of wasmtime-wasi lets a malicious guest bypass send address restrictions. An attacker-controlled guest can deliver datagrams to addresses the policy only allows for receiving.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","rust","wasi","wasmtime","webassembly"],"not_affected_if":["no-untrusted-guests","wasip3-sockets-unused"],"how_to_check":"- Check the `wasmtime-wasi` version in `Cargo.lock` or your dependency tree; affected are 48.0.0 to before 48.0.8, 49.0.0 to before 49.0.5, and 50.0.0 to before 50.0.1.\n- Check whether the application uses the wasip3 `wasi:sockets` UDP interface for untrusted guests.","fix":"- `wasmtime-wasi` `48.0.8`\n- `wasmtime-wasi` `49.0.5`\n- `wasmtime-wasi` `50.0.1`","status":"open","published_at":"2026-11-13T10:17:46+00:00","first_seen_at":"2026-11-13T10:47:20+00:00","triaged_at":"2026-11-13T10:55:03+00:00","updated_at":"2026-11-13T10:55:03+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-13T10:55:03Z","model":"claude-haiku-5-5","output":{"fix":"- `wasmtime-wasi` `48.0.8`\n- `wasmtime-wasi` `49.0.5`\n- `wasmtime-wasi` `50.0.1`","reach":"local","title":"Wasmtime WASI: UDP socket race lets guests send to blocked addresses","impact":"medium","summary":"A time-of-check/time-of-use race in the wasip3 wasi:sockets UDP implementation of wasmtime-wasi lets a malicious guest bypass send address restrictions. An attacker-controlled guest can deliver datagrams to addresses the policy only allows for receiving.","audience":"developers","category":"package","nicknames":[],"who_cares":["wasmtime","wasi","webassembly","rust"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"Guest sends datagrams to addresses the policy forbids.","analyst_note":"","how_to_check":"- Check the `wasmtime-wasi` version in `Cargo.lock` or your dependency tree; affected are 48.0.0 to before 48.0.8, 49.0.0 to before 49.0.5, and 50.0.0 to before 50.0.1.\n- Check whether the application uses the wasip3 `wasi:sockets` UDP interface for untrusted guests.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["no-untrusted-guests","wasip3-sockets-unused"],"who_is_affected":"Only applications that embed Wasmtime and run untrusted WebAssembly guests with the wasip3 UDP socket interface enabled are exposed. Projects that do not run untrusted guests, or that do not use wasip3 UDP sockets, can skip it.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000787,"input_tokens":4700,"output_tokens":633,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-126410':14A,17A '-2026':13A,16A '/time-of-use':28B,87C '48.0.0':71C '48.0.8':73C '49.0.0':74C '49.0.5':76C '50.0.0':78C '50.0.1':80C 'addr':104C 'address':11A,47B,58B,123C 'allow':62B 'attack':51B,119C 'attacker-control':50B,118C 'block':10A 'bypass':45B,102C 'check':27B,86C,105C 'contain':81C 'control':52B,120C 'crate':70C 'cve':12A,15A 'datagram':56B,121C 'deliv':55B,117C 'guest':7A,44B,53B,101C,110C 'host':97C 'implement':36B,98C 'let':6A,41B,100C 'malici':43B,109C 'packag':18B 'permit':126C 'polici':60B,125C 'race':5A,29B,88C,112C 'receiv':64B,129C 'restrict':48B,107C 'rust':19B 'send':8A,46B,106C 'socket':4A,34B,93C,96C,103C 'time':25B,84C 'time-of-check':24B,83C 'udp':3A,35B,95C 'udp-socket':94C 'udp-socket.connect':115C 'udp-socket.send':113C 'wasi':2A,20B,33B,40B,69C,92C 'wasip3':32B,91C 'wasmtim':1A,21B,39B,65C,68C 'wasmtime-wasi':38B,67C 'webassembl':22B","nicknames":[],"mitigations":[],"who_affected":"Only applications that embed Wasmtime and run untrusted WebAssembly guests with the wasip3 UDP socket interface enabled are exposed. Projects that do not run untrusted guests, or that do not use wasip3 UDP sockets, can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["medium","package","rust","wasi","wasmtime","webassembly"],"campaign_type":null,"search_a":"'-126410':14A,17A '-2026':13A,16A 'address':11A 'block':10A 'cve':12A,15A 'guest':7A 'let':6A 'race':5A 'send':8A 'socket':4A 'udp':3A 'wasi':2A 'wasmtim':1A","search_b":"'/time-of-use':28B 'address':47B,58B 'allow':62B 'attack':51B 'attacker-control':50B 'bypass':45B 'check':27B 'control':52B 'datagram':56B 'deliv':55B 'guest':44B,53B 'implement':36B 'let':41B 'malici':43B 'packag':18B 'polici':60B 'race':29B 'receiv':64B 'restrict':48B 'rust':19B 'send':46B 'socket':34B 'time':25B 'time-of-check':24B 'udp':35B 'wasi':20B,33B,40B 'wasip3':32B 'wasmtim':21B,39B 'wasmtime-wasi':38B 'webassembl':22B","search_c":"'/time-of-use':87C '48.0.0':71C '48.0.8':73C '49.0.0':74C '49.0.5':76C '50.0.0':78C '50.0.1':80C 'addr':104C 'address':123C 'attack':119C 'attacker-control':118C 'bypass':102C 'check':86C,105C 'contain':81C 'control':120C 'crate':70C 'datagram':121C 'deliv':117C 'guest':101C,110C 'host':97C 'implement':98C 'let':100C 'malici':109C 'permit':126C 'polici':125C 'race':88C,112C 'receiv':129C 'restrict':107C 'send':106C 'socket':93C,96C,103C 'time':84C 'time-of-check':83C 'udp':95C 'udp-socket':94C 'udp-socket.connect':115C 'udp-socket.send':113C 'wasi':69C,92C 'wasip3':91C 'wasmtim':65C,68C 'wasmtime-wasi':67C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-29T19:05:50+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/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","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-126410","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-126410","severity":null,"published_at":"2026-11-13T10:17:46+00:00","modified_at":"2026-11-13T10:17:46+00:00","first_seen_at":"2026-11-13T10:47:20+00:00","fetched_at":"2026-11-13T10:47:20+00:00","note":null}],"documents":[{"id":145063,"url":"https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-hmmr-87qq-258j","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-29T19:05:50+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":145064,"url":"https://www.vulncheck.com/advisories/wasmtime-48.0.0-before-48.0.8-toctou-udp-send-policy-bypass-via-wasip3-sockets","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}