Análise detalhada de um golpe sofisticado envolvendo uma mainnet falsa da GIWA, que em 27/09/2026 resultou na perda de 766 ETH por parte dos usuários e comprometeu a exchange descentralizada (DEX) DYORSWAP devido à integração de um RPC falso.
Enganação de Outro Nível: Como Falsificar uma Blockchain?
Eu estava dando aquela olhada no feed de monitoramento de segurança e... quase derrubei meu café. Setecentos e sessenta e seis Ethers. Simplesmente evaporaram. Se fosse o clássico phishing de biblioteca ou exploit de contrato com flash loan, eu diria "beleza, nada novo sob o sol, já vi de monte". Mas esse cenário foi construído com uma elegância e malícia impressionantes. Os golpistas subiram uma mainnet falsa da GIWA, conectaram a um DEX de terceiros e limparam os usuários em alguns milhões de dólares.
Vamos destrinchar esse incidente nos mínimos detalhes, porque sob uma ótica de engenharia e arquitetura, vale muito a pena analisar. Como especialista em InfoSec e CTO atuante, quase tirei o chapéu para a audácia da implementação — embora, claro, ninguém queira estar na pele do pessoal da DYORSWAP agora.
Espera aí, dá mesmo para "falsificar" uma blockchain de Camada 2 (L2)? Para quem está de fora, soa absurdo, mas no mundo EVM uma rede não tem nada de mágica; é basicamente um conjunto de convenções e endpoints RPC.
Os invasores pegaram uma stack open-source (provavelmente fazendo um fork de algo como o OP Stack) e rodaram o seu próprio nó. Mas só subir o servidor não basta; eles precisavam convencer carteiras e aplicações de que aquilo era o produto oficial da exchange sul-coreana Upbit, sendo que a verdadeira GIWA nem tinha lançado oficialmente em mainnet ainda.
Eles colocaram hardcoded na configuração do nó o Chain ID oficial — o número 9134, que a equipe da GIWA havia registrado com antecedência para o seu futuro blockchain. E é exatamente aqui que mora a grande vulnerabilidade de todo o ecossistema: carteiras como o MetaMask validam redes com base em strings de configuração e IDs, e não por raízes de confiança criptográficas ligadas aos criadores reais.
E foi bem aí que a DEX DYORSWAP caiu do cavalo. Eles adicionaram esse RPC falso na própria infraestrutura na tentativa de surfar o hype da rede nova antes de todo mundo.
Sabe, antigamente quando eu mesmo fazia auditorias de smart contracts por conta própria, a gente sempre pensava: beleza, o front-end pode ser clonado, o RPC pode ser trocado, mas o contrato inteligente da bridge é sagrado, afinal o código roda direto na blockchain do Ethereum! E é exatamente aí que armadilha mais sutil desse ataque foi armada.
Por Que os Usuários Não Desconfiaram de Nada?
Os usuários não desconfiaram de nada porque a bridge parecia exatamente com a interface nativa para transferir fundos do Ethereum para a rede L2 da GIWA. A galera assinava transações no MetaMask, mandando seus preciosos ETH direto para o contrato inteligente de depósito na mainnet.
Tecnicamente, esse contrato foi escrito pelos golpistas para imitar o funcionamento de um localizador de depósitos padrão. Assim que a transação era validada na rede principal, os fraudadores ganhavam controle total dos fundos. Em troca, o usuário recebia tokens falsos sem nenhum respaldo no saldo da L2 falsa. Os números na tela subiam, criando a ilusão de um bridge bem-sucedido, enquanto o Ether de verdade já voava para as carteiras dos organizadores, evaporando em mixers. No fim das contas, 1.335 endereços únicos rodaram, deixando cerca de 767,7 ETH presos narapadura. E o melhor (ou pior): conseguiram sacar limpo uns 766.3 ETH gastando o mínimo possível de gás.
A equipe da DYORSWAP tirou onda e bancou mais de 200 ETH do próprio bolso para reembolsar a galera. Respeito muito essa postura com a reputação da marca, embora aquela brecha arquitetônica na validação de conexões RPC externas vá exigir muito suor para ser fechada.
Agora vamos para a parte prática. Quer evitar virar patrocinador de estelionatário se você curte ser o primeiro a testar novas blockchains? Montei um script em Python para checar e verificar nós RPC antes de você sequer pensar em conectar sua carteira neles.
#!/usr/bin/env python3
import requests
def rpc_call(rpc_url, method, params=None):
if params is None:
params = []
payload = {
"jsonrpc": "2.0",
"method": method,
"params": params,
"id": 1
}
response = requests.post(rpc_url, json=payload, timeout=10)
response.raise_for_status()
data = response.json()
if "error" in data:
raise RuntimeError(f"{method}: {data['error']}")
return data.get("result")
def verify_evm_node(rpc_url, expected_chain_id):
try:
chain_id_hex = rpc_call(rpc_url, "eth_chainId")
chain_id = int(chain_id_hex, 16)
net_version = rpc_call(rpc_url, "net_version")
client_version = rpc_call(rpc_url, "web3_clientVersion")
block_number_hex = rpc_call(rpc_url, "eth_blockNumber")
block_number = int(block_number_hex, 16)
latest_block = rpc_call(
rpc_url,
"eth_getBlockByNumber",
["latest", False]
)
print("=" * 60)
print(f"RPC URL : {rpc_url}")
print(f"Chain ID : {chain_id}")
print(f"Expected ChainID : {expected_chain_id}")
print(f"Net Version : {net_version}")
print(f"Client Version : {client_version}")
print(f"Block Number : {block_number}")
if latest_block:
print(f"Latest Block Hash: {latest_block.get('hash')}")
print(f"Latest Block Num : {int(latest_block['number'], 16)}")
print(f"Parent Hash : {latest_block.get('parentHash')}")
print(f"Timestamp : {int(latest_block['timestamp'], 16)}")
print("=" * 60)
checks = []
checks.append(chain_id == expected_chain_id)
try:
checks.append(int(net_version) == expected_chain_id)
except Exception:
checks.append(False)
checks.append(block_number > 0)
checks.append(
latest_block is not None
and latest_block.get("hash")
and latest_block.get("parentHash")
and latest_block.get("number")
)
if all(checks):
print("VERIFICATION PASSED")
return True
print("VERIFICATION FAILED")
return False
except Exception as e:
print(f"ERROR: {e}")
return False
if __name__ == "__main__":
verify_evm_node(
"https://your-rpc-endpoint",
9134
)Anote a regra de ouro: nunca confie em listas de redes vindas de perfis duvidosos no Twitter ou DEXs não verificadas, a menos que o projeto oficial publique os endpoints exatos através de seus canais oficiais e seguros (nada de redes sociais, confira a documentação oficial ou o site com certificado SSL válido). A Upbit já deixou claro com todas as letras que a mainnet deles nem foi lançada e que qualquer RPC circulando por aí agora é golpe puro.