ReentrancyA contract makes an external call before it updates its own state. The callee re-enters and acts on the stale state.
Access controlA privileged function, such as upgrade, mint, or withdraw, can be called by an address that should not be able to.
Arithmetic and castsAn overflow, an underflow, or a silent truncation in a cast changes a balance or a price.
Oracle manipulationThe contract reads a price from a source that one transaction can move, such as a thin pool, and then acts on it.
Signature replayA signed message is accepted twice, or on another chain, because it does not bind a nonce and a chain id.
Proxy storage collisionAn upgradeable proxy and its implementation use the same storage slot for different variables.