04:52
<bakkot>
what do y'all figure the odds are that we could make Object.assign special-case __proto__ to not trigger the setter on Object.prototype
04:52
<bakkot>
probably not high, I guess
04:52
<bakkot>
but I would like that
04:52
<bakkot>
(not trigger any setters on Object.prototype, ideally.)
13:22
<littledan>
huh, are you seeing a particular sort of injection attack occur?
13:22
<littledan>
or like where is this coming up?
13:24
<littledan>
Oh this is what everyone is talking about for "secure" JSON parse?
13:51
<bakkot>
littledan: yeah
13:53
<bakkot>
some actually exploitable issues, for a change, e.g. https://github.com/advisories/GHSA-p6h4-93qp-jhcm
13:54
<Jack Works>
what do y'all figure the odds are that we could make Object.assign special-case __proto__ to not trigger the setter on Object.prototype
Maybe we should let SES shim to do that 🤔
13:54
<bakkot>
also just a violation of expectations, really
13:54
<Jack Works>
Oh I don't know if SES is removing __proto__ accessors
14:07
<littledan>
so this is entirely avoided by Object spread right?
14:07
<littledan>
what do y'all figure the odds are that we could make Object.assign special-case __proto__ to not trigger the setter on Object.prototype
idk seeing the implications I'd be OK with this change as a security/legacy hotfix
14:08
<littledan>
at this point I guess we could agree that Object.assign should've had {... } semantics
14:08
<bakkot>

this is entirely avoided by Object spread right

yup

14:10
<bakkot>
though I guess there are still some cases where you want to mutate rather than making a new object, and spread doesn't help there
14:15
<littledan>
right, but we kinda should've done the other aspects of spread semantics, but it's too late now
14:15
<littledan>
yeah the small patch sounds like a good approach to me
14:19
<bakkot>
there's still going to be bugs with manually copying properties, which happens pretty often, but this would be an improvement at least
14:26
<bakkot>
looking in a little more detail https://arxiv.org/pdf/2207.11171.pdf reports one object.assign issue (linked above) and then two manual copying issues, both in the npm cli (patches for which are https://github.com/angus-c/just/blob/66b8abacba16fff2f16a61620ddaddbcad092349/packages/collection-diff-apply/index.js#L109-L113 and https://github.com/npm/parse-conflict-json/blob/6de41ffe0715cedcd92840e7b463b965461d6235/lib/index.js#L92-L94 )
14:27
<bakkot>
can't do much about the manual copying cases, though
14:34
<littledan>
Do we have any evidence that this error is common?
14:43
<bakkot>
the object.assign one in particular? not that I'm aware of
14:45
<bakkot>
JSON.parse in particular? also not that I'm aware of. a lot of exploitable prototype pollution issues in practice come from other sources, notably parsing+copying of query parameters
14:46
<bakkot>
there are, unfortunately, a distressing number of ways one might end up copying properties from one object to another
14:46
<bakkot>
we do have evidence that prototype pollution in general is something which is common, though, I think.
14:46
<littledan>
can we file a CVE to instruct everyone to give up and switch to Python? merging dictionaries and objects seems like a mistake
14:47
<bakkot>
if only
14:48
<bakkot>
original sin was having Object.prototype in the first place
14:49
<bakkot>
and also accessors
14:49
<bakkot>
a massive sin in combination, also each a sin in isolation
14:51
<littledan>
also mutable prototypes, instead of Object.create
16:01
<ptomato>
snek: installation of graaljs in esvu seems to be breaking, you asked for a heads up if that happened again :-)
16:02
<ptomato>
https://app.circleci.com/pipelines/github/tc39/test262/4173/workflows/ac21cfed-4152-496a-962d-a0d6d24649fe/jobs/38890
16:05
<snek>
oh is that
16:05
<snek>
outdated esvu?
16:06
<snek>
yeah it is
16:06
<snek>
should be 1.2.9 but thats 1.2.8