Closing Accounts Vulnerability
Segurança · Abismo
Uma vulnerabilidade que surge quando um programa fecha uma conta zerando seus dados e transferindo lamports sem definir o discriminador ou dados da conta para um estado sentinel de fechamento antes do fim da instrução, deixando uma janela dentro da mesma transação onde outras instruções podem ainda interagir com a conta agora vazia. O runtime Solana só remove uma conta do conjunto de contas quando seus lamports chegam a zero no final de uma transação, então no meio da transação a conta ainda existe e uma instrução subsequente pode re-financiá-la e reinstaurar dados obsoletos, permitindo um ataque de revival de conta. A restrição close do Anchor escreve um CLOSED_ACCOUNT_DISCRIMINATOR (8 bytes de 0xff) e usa um mecanismo de force-defund para prevenir ressurreição.