Moving information from ZOOM chat to here for posterity
From Yoav Weiss to Everyone: (12:15 PM)
Since we're delaying the fork and have time to fix it now, I'd like to re-propose the fix I brought up earlier: Accept the EIP to lower the SSTORE fee, but add a condition that reverts storage access if gasleft < 2300. This preserves the original intention of the EIP (lowering the fees) while preventing exploitation. It is unlikely that a legit transaction will need to access storage while gasleft < 2300.
From Yoav Weiss to Everyone: (12:15 PM)
So when we apply the fork again, maybe we could do that and keep it as close as possible to the original fork.
From Nick Johnson to Everyone: (12:18 PM)
Yoav, that’s an excellent idea for a fix.
Vitalik (audio)
(expresses some hesitance around not being certain about full extent of vuln? more analysis would need to be done)
Any attempts to make state-changing operations inside an execution instance with STATIC set to true will instead throw an exception. These operations include CREATE, CREATE2, LOG0, LOG1, LOG2, LOG3, LOG4, SSTORE, and SELFDESTRUCT. They also include CALL with a non-zero value. As an exception, CALLCODE is not considered state-changing, even with a non-zero value.
LOG*
is the major reason token contracts would have code in the “fallback” function