Javascript 浏览器中的WebAssembly安全问题

Javascript 浏览器中的WebAssembly安全问题,javascript,security,browser,webassembly,Javascript,Security,Browser,Webassembly,假设我有一个从example.com加载的网页,其中包含一些Javascript和来自同一来源的两个WebAssembly。我试图理解安全边界,但找不到一个将所有这些放在一起的引用。因此: WebAssembly模块是否可以直接在example.com上执行HTTP操作?(我想:是的) Javascript能否访问任何未显式导出的WebAssembly的“内部”(数据或代码)?(我认为:没有) WebAssembly 1能否访问WebAssembly 2未明确导出的任何“内部”(数据或代码)?

假设我有一个从
example.com
加载的网页,其中包含一些Javascript和来自同一来源的两个WebAssembly。我试图理解安全边界,但找不到一个将所有这些放在一起的引用。因此:

  • WebAssembly模块是否可以直接在
    example.com
    上执行HTTP操作?(我想:是的)
  • Javascript能否访问任何未显式导出的WebAssembly的“内部”(数据或代码)?(我认为:没有)
  • WebAssembly 1能否访问WebAssembly 2未明确导出的任何“内部”(数据或代码)?(我认为:没有)
  • WebAssembly是否可以访问任何Javascript(数据或代码)?(我认为:不,除非它是回调或先向它明确注册的)
我真正想做的是:

  • 如果WebAssembly 1包含一个“秘密令牌1”,而WebAssembly 2包含一个“秘密令牌2”,那么他们中的任何一方是否有办法访问另一方的令牌
如果WebAssembly 1包含一个“秘密令牌1”,而WebAssembly 2包含一个“秘密令牌2”,那么他们中的任何一方是否有办法访问另一方的令牌


因为它们运行在同一个原点,可能是的。但您应该能够通过沙盒iFrame或类似的方法使用不同的来源来防止这种情况。

什么是“包含”意思?编译到源代码中还是在运行时计算?我想你所有问题的答案都是肯定的,这取决于WASM模块的导入/导出。@Jonaswillms我指的是编译到源代码中。但是有区别吗?如果出口受到尽可能多的限制,你认为准入还是有可能的?任何指向此描述的指针,因为我找不到任何权威。是的,有。WASM文件只是通过HTTP加载的一堆文本。因此,一旦WebAssembly1能够逃逸到JS领域,它就可以简单地再次获取另一个源代码并执行它想用它执行的任何操作。从正在运行的运行时中获取信息可能更加困难。“尽可能严格”可以起作用,但JS中有很多陷阱(例如
eval
),因此很难做到这一点。