Wasmtime — это среда выполнения WebAssembly. Начиная с версий 25.0.0 и до версий 36.0.7, 42.0.2 и 43.0.1, компилятор Winch компании Wasmtime содержит ошибку, из-за которой 64-битная таблица, являющаяся частью предложения Memory64 WebAssembly, неправильно транслировала инструкцию table.size. Эта ошибка может привести к раскрытию данных в стеке хоста гостям WebAssembly.
Стек хоста может содержать конфиденциальные данные, относящиеся к другим операциям, исходящим от хоста, которые не предназначены для раскрытия гостям. Эта ошибка, в частности, возникла из-за ошибки, когда возвращаемое значение table.size было статически типизировано как 32-битное целое число, а не сверялось с типом индекса таблицы, чтобы увидеть, насколько большим может быть возвращаемый регистр. В сочетании с подробностями об ABI Wnich, такими как возвраты с несколькими значениями, это можно объединить для чтения данных стека с хоста в гостевой системе.
Эта уязвимость исправлена в версиях 36.0.7, 42.0.2 и 43.0.1.
Показать оригинальное описание (EN)
Wasmtime is a runtime for WebAssembly. From 25.0.0 to before 36.0.7, 42.0.2, and 43.0.1, Wasmtime's Winch compiler contains a bug where a 64-bit table, part of the memory64 proposal of WebAssembly, incorrectly translated the table.size instruction. This bug could lead to disclosing data on the host's stack to WebAssembly guests. The host's stack can possibly contain sensitive data related to other host-originating operations which is not intended to be disclosed to guests. This bug specifically arose from a mistake where the return value of table.size was statically typed as a 32-bit integer, as opposed to consulting the table's index type to see how large the returned register could be. When combined with details about Wnich's ABI, such as multi-value returns, this can be combined to read stack data from the host, within a guest. This vulnerability is fixed in 36.0.7, 42.0.2, and 43.0.1.
Характеристики атаки
Последствия
Строка CVSS v4.0