Submitted by carlitox477, also found by cryptphi and ladboy233
https://github.com/code-423n4/2022-08-olympus/blob/b5e139d732eb4c07102f149fb9426d356af617aa/src/policies/Governance.sol#L265
https://github.com/code-423n4/2022-08-olympus/blob/b5e139d732eb4c07102f149fb9426d356af617aa/src/policies/Governance.sol#L278-L288
Given that the activeProposal change is done before the for loop, if this function is call through one kernel.executeAction(instruction,target) we can call the same instructions (in the same order) again and again, which may or may not affect funds (depending on the instructions).
For instance, if we install a new module, and this module has a vulnerability (even intentional), the next steps can by trigger:
Use nonReentrant modifier or move the line activeProposal = ActivatedProposal(0, 0); before the for loop.
fullyallocated (Olympus) confirmed and commented:
