Имеет ли значение какой язык используется при конвертации в WebAssembly? - PullRequest
4 голосов
/ 04 февраля 2020

Например, C не имеет тех же решений по безопасности, что и Rust, но имеет ли WebAssembly, написанная на Rust, преимущества Rust?

Будет ли программа, написанная на Rust и преобразованная в WebAssembly, "безопаснее", чем написано в C?

1 Ответ

5 голосов
/ 04 февраля 2020

Да.

Хотя WASM и сам предотвращает некоторые атаки, многие программы, которые Rust делает невозможными или труднее использовать, все равно будут присутствовать в программе C для WASM. В WASM существуют по крайней мере следующие векторы атаки:

  • Целочисленные переполнения / недополнения: это UB в C, но они определены в Rust.
  • Переполнения буфера: WASM использует линейная память. Rust предотвращает переполнение буфера, это UB в C.
  • Использование после освобождения: невозможно иметь в безопасном Rust, это часто встречается в C.

Некоторые другие атаки не должно быть возможности использования WASM, независимо от того, используется ли C или Rust в качестве исходного языка:

  • Произвольное выполнение кода на уровне ОС: WASM вообще не имеет таковых.
  • Executable- в WASM защита пространства не требуется.

Единственный способ использовать эти векторы атаки - найти уязвимость в самом браузере.

...