Allowance Race Condition in `approve()`
The standard ERC20 `approve()` function is susceptible to a known front-running vulnerability. If a user approves an allowance for a spender, and then attempts to change that allowance by calling `approve()` again with a new amount, a malicious actor could front-run the second transaction. This could allow the attacker to spend the original allowance, and then also spend the new allowance, effectively doubling the amount they can spend (7.2 Code Security). OpenZeppelin mitigates this by providing `increaseAllowance()` and `decreaseAllowance()` functions, which are safer alternatives.