00:45
<Kris Kowal>
Apropos of this, Agoric uses a variant of XS that can start from a heap snapshot and it would be neat for us to be able to take advantage of that with a test262 runner.
00:50
<bakkot>

this bug is genuinely cursed: https://github.com/bjrjk/CVE-2022-4262/blob/main/FA/FA.md

it relies on

  • the thing where you need to re-parse arrows when you encoutner the =>
  • computed property name syntax
  • class bodies are strict mode
  • you can put arbitrary expressions in arrow parameters
  • direct eval depends on strictness of surrounding context

good example of a real-life security issue arising as a direct consequence of making the language so complicated.

09:51
<yulia>
wow that is a doozy
13:32
<littledan>
ES6 broke a lot of assumptions that engines could previously make in their parser/bytecode generator, eg around scoping and what can occur in an expression position. Fortunately we haven’t touched that area very much since ES6. Maybe the most significant thing we have done is private fields/methods (which involve scoping), the biggest Stage 3 one is decorators (which add evaluation into new places), and the biggest future thing is do expressions (which I expect to be nontrivial to implement for this reason in some engines, even if they omit break/continue/return, but those certainly make this surface much bigger)
13:32
<littledan>
There were lots of other bugs in the process that just got caught sooner somehow or other
15:39
<Michael Ficarra>
class fields and class static blocks probably fall into the category of new expression positions that could cause these kinds of implementation errors, too
15:47
<littledan>
agreed. something notable is that we did a lot of these changes in ES6, and then subsequent ones are fewer and farther between, somehow.
17:07
<Jack Works>

Fortunately we haven’t touched that area very much since ES6.

do expression is coming~

22:18
<shu>
private fields have the super weird heritage position scope
22:18
<shu>
that's separate than the lexical scope
22:18
<shu>
i wouldn't be surprised if there's a CVE in there somewhere