De acordo com a análise da equipe de segurança da Beosin, a causa raiz do ataque ao projeto JPEG foi um ataque de reentrada, resultando em perdas de pelo menos aproximadamente US$ 10 milhões. Quando o invasor chama a função remove_liquidity para remover a liquidez, ele adiciona liquidez entrando novamente na função add_liquidity. Como o saldo é atualizado antes de entrar novamente na função add_liquidity, ocorre um erro no cálculo do preço.