An audit of a standard selfdestruct pattern — a function that lets a contract be destroyed and its funds sent away.
selfdestruct removes the contract's code and forces its balance to a target:
selfdestruct(payable(addr))addr — users' locked funds are goneOften combined with a missing access-control bug: an attacker self-destructs to (a) kill the protocol, or (b) force-transfer balances to a target.
High — "selfdestruct allows contract destruction — funds can be cleared." AI also cross-references it with access-control: a selfdestruct with no onlyOwner is a direct kill-switch takeover.
selfdestruct is irreversible. One reachable call bricks the contract and re-routes funds — which is why AI flags every instance and its guard.