The StdTx.Fee can be set to a negative amount.
Since there is no validation both the FeePool will be corrupted and the first signature's balance increased.
This is a critical problem since any account can drain the fee pool and add the tokens to their own account.
Set StdTx to a negative Coins amount
Ref https://github.com/cosmos/cosmos-sdk/issues/1273, which would have prevented this entire class of bugs, of which there have been several so far.
Potentially fits the security tag as well.
@cwgoes I agree. Any particular reason #1273 has not been implemented yet ? That could also avoid a lot of redundant .LT(0) checks.
Any particular reason #1273 has not been implemented yet?
Not any good one. We're on it.
Most helpful comment
Ref https://github.com/cosmos/cosmos-sdk/issues/1273, which would have prevented this entire class of bugs, of which there have been several so far.