I hope GitHub will prioritise immutable actions and enforce it to all actions
(I don't know how hard it is to push a different object to an existing SHA on GitHub—I'm guessing that you probably have to remove all references to the original object at that SHA?)
You need immutability and something like sandboxing where actions cannot e.g. dump the memory of the runner process to steal secrets.
The alternative is vetting every single line of code in every dependency and every subdependency perfectly for every update, which is not realistic.