Submitted by kebabsec, also found by kenzo, cryptphi, and 0xsomeone
If a token with callback capabilities is used as a token to vested, then a malicious beneficiary may get the vested amount back without waiting for the vesting period.
In the function release, line, theres no modifier to stop reentrancy, in the other contracts it would be the synchronized modifier. If a token could reenter with a hook in a malicious contract (an ERC777 token, for example, which is backwards compatible with ERC20), released token counter array wouldnt be updated, enabling the withdrawal of the vested amount before the vesting period ends. A plausible scenario would be:
Theres also precedents of similar bugs that reported, as seen here
bghughes (Rubicon) confirmed, but disagreed with severity and commented:
HickupHH3 (judge) commented:
