Две критични уязвимости в Wasmtime – среда за изпълнение на WebAssembly, която може да бъде вграждана в друг софтуер – биха могли да позволят на злонамерен WebAssembly модул да излезе от изолираната среда (sandbox), предназначена да го ограничава, съобщават поддържащите проекта.

За целта нападателят първо трябва да накара уязвима версия на Wasmtime да компилира контролиран от него модул, като единият от дефектите засяга единствено ARM64 системи. Коригираните версии бяха пуснати на 19 и 20 октомври, като поддържащите екипи не съобщават за регистрирани атаки.

Wasmtime изпълнява WebAssembly код извън уеб браузърите. И двата проблема се намират в Cranelift – компилаторът, използван по подразбиране за преобразуване на WebAssembly в машинен код. Поддържащите Wasmtime от Bytecode Alliance оцениха всяка от уязвимостите с 9.9 от 10 по скалата CVSS в бюлетините за сигурност, публикувани на 19 октомври.

  • CVE-2026-115889 засяга Wasmtime на всички процесорни архитектури.
  • CVE-2026-115893 засяга само ARM64, наричана още aarch64.

Изолираната среда има за цел да държи модула в рамките на предварително зададени граници. Модулът може да използва само собствената си памет и предоставените му функции от хост системата, а кодът му може да прескача само до проверени адреси.

Тъй като и двата дефекта изискват модул, контролиран от атакуващия, рискът е най-висок за услуги, които компилират модули, предоставени от външни потребители. Fastly, например, посочва, че нейната платформа Compute изпълнява клиентски код с помощта на Wasmtime. В бюлетините не се посочват конкретни засегнати услуги, нито се уточнява какъв достъп би могъл да получи атакуващият след напускане на изолираната среда.

Към 26 октомври нито една от двете уязвимости не фигурира в каталога с известни експлоатирани уязвимости (KEV), поддържан от Агенцията за киберсигурност и сигурност на инфраструктурата на САЩ (CISA).

Кои версии са засегнати

Двете уязвимости бяха отстранени по различно време, така че дали вашата версия е засегната зависи от поддържания клон на изданието и, за една от уязвимостите, от вашата процесорна архитектура.

Версия на WasmtimeCVE-2026-115889 (всички архитектури)CVE-2026-115893 (само ARM64)Какво да предприемете
Преди 36.0.19 (включително 24.x)ЗасегнатаЗасегнатаОбновете до 36.0.19 или преминете към 48.0.7, 49.0.4 или 50.0.0
36.0.19КоригиранаКоригиранаНе се изискват действия за тези уязвимости
От 37.0.0 до 42.xЗасегнатаЗасегнатаПреминете към 48.0.7, 49.0.4 или 50.0.0
От 43.0.0 до 47.xНе е засегнатаЗасегнатаПреминете към 48.0.7, 49.0.4 или 50.0.0
От 48.0.0 до 48.0.6Не е засегнатаЗасегнатаОбновете до 48.0.7
48.0.7Не е засегнатаКоригиранаНе се изискват действия за тези уязвимости
От 49.0.0 до 49.0.3Не е засегнатаЗасегнатаОбновете до 49.0.4
49.0.4 и 50.0.0 или по-новаНе е засегнатаКоригиранаНе се изискват действия за тези уязвимости

Wasmtime поддържа издания с дългосрочна поддръжка (LTS), които са номерирани през кратни на 12 числа, в продължение на две години. Останалите версии получават поддръжка от два месеца. Корекции за сигурност са гарантирани за поддържаните версии.

Единствено клоновете 36, 48, 49 и 50 все още се поддържат. Всички останали клонове, включително 24.x LTS, чиято поддръжка приключи на 20 август 2026 г., не получиха корекция.

ARM64 хостове, които са се обновили до 36.0.7, 42.0.2 или 43.0.1 през април за отстраняване на по-ранно компрометиране на изолираната среда в Cranelift при ARM64, все още са засегнати от CVE-2026-115893.

Какво да предприемете

Инсталирайте коригираното издание за вашия клон: 36.0.19, 48.0.7 или 49.0.4. Версия Wasmtime 50.0.0, публикувана на 20 октомври, е с отстранени уязвимости и за двата проблема. Системи на неподдържан клон трябва да преминат към едно от тези издания.

Wasmtime може да бъде вграждан в други програми като библиотека, така че обновяването на инструмента за команден ред не ги поправя. Всяка програма, която съдържа Wasmtime, трябва да бъде прекомпилирана с коригирана версия.

Нито един от бюлетините не посочва временни мерки (workarounds). Докато хостът не бъде обновен, рискът произтича от всеки модул, който външно лице може да подаде.

И двете уязвимости са описани в RustSec – базата данни, която инструментът cargo-audit използва за проверка на файлове Cargo.lock – под идентификатори RUSTSEC-2026-0380 и RUSTSEC-2026-0379.

Към 26 октомври базата данни за бюлетини на GitHub имаше прегледан запис за CVE-2026-115889, но не и за CVE-2026-115893. От GitHub посочват, че само прегледаните записи задействат известия от Dependabot, така че потребителите на Dependabot не трябва да очакват предупреждение за дефекта при ARM64.

Spin, инструмент с отворен код за изграждане на serverless WebAssembly приложения, базиран на Wasmtime, премина към Wasmtime 50.0.0 във версия 4.2.4 на 21 октомври.

Как работят двете уязвимости

CVE-2026-115889 произтича от начина, по който Cranelift съхранява стойностите, използвани за проследяване на променливи във функция. Преди версия 43 компилаторът пакетираше тези числа в 24-битови полета, като в крайните компилации (release builds) стойност, която надвишава капацитета на полето си, преливаше без каквото и да е съобщение за грешка.

В резултат на това Cranelift може да реферира грешна стойност, генерирайки некоректен машинен код. Изключително голяма WebAssembly функция или такава, проектирана да използва голям брой стойности, може да използва това за предизвикване на объркване на типовете (type confusion) и напускане на изолираната среда, според официалния бюлетин.

Основният клон за разработка на Wasmtime вече беше премахнал проблема. Промяна, обединена на 18 февруари, разшири полетата до 32 бита и влезе в състава на Wasmtime 43.0.0 на 20 март. Нейното описание я представяше единствено като начин за компилиране на по-големи функции, без да се споменава въздействие върху сигурността.

Клонът 36.x LTS получи същата промяна на 19 октомври. В бюлетина не се посочва кога точно е било осъзнато отражението върху сигурността.

CVE-2026-115893 засяга br_table – инструкция в WebAssembly, която извършва преход към едно от множество места в кода въз основа на индекс. Индекс извън границите на таблицата препраща към цел по подразбиране. При ARM64 архитектури Cranelift изпращаше тези извънгранични индекси към дестинацията по подразбиране чрез разклонение, което може да достигне най-много около 1 MiB разстояние.

Инструкция br_table с повече от около 256 000 цели прави таблицата за преходи твърде голяма за този обхват, при което разклонението тихомълком сочи към неправилно местоположение.

Всеки модул Wasmtime на ARM64 със стандартни настройки „може да бъде принуден да извърши преход към произволен код чрез контролиран от потребителя Wasm модул“, се посочва в бюлетина. Грешката присъства откакто Wasmtime за първи път въведе поддръжка за ARM64 през 2020 г.

Корекцията пренасочва индексите извън обхвата през самата таблица за преходи, така че вече не е необходимо далечно разклонение. Коригираните версии също така отказват да компилират br_table с повече от 65 520 цели.