O hacker que roubou 165 ETH ($32.000) do SpankChain concordou em devolver seus ganhos ilícitos. O Ethereum plataforma de entretenimento adulto baseada confirmou isso em uma série de tweets hoje.
https://twitter.com/SpankChain/status/1050533900001243136
Aqui, na íntegra, é o seu Médio post sobre a violação de segurança: “Às 18h PST sábado, um atacante desconhecido drenou 165.38 ETH (~ $38.000) do nosso contrato inteligente canal de pagamento, que também resultou em $4.000 no valor de BOOT no contrato ficando imobilizado. Do ETH/BOOT roubado/imobilizado, 34.99 ETH (~ $8.000) e 1271.88 BOOT pertencem aos usuários (~ $9.300 total), e o resto pertencia ao SpankChain.
Infelizmente, como estávamos no meio da investigação de outros bugs de contrato inteligente, não percebemos que o hack tinha ocorrido até 7:00 pm PST domingo, momento em que colocamos Spank.Live off-line para evitar que quaisquer fundos adicionais sejam depositados no contrato inteligente canais de pagamento.
Nossa prioridade imediata foi fornecer reembolsos completos a todos os usuários que perderam fundos. Estamos preparando um airdrop ETH para cobrir todos os US $9.300 de ETH e BOOTY que pertenciam aos usuários. Os fundos serão enviados diretamente para as contas SpankPay dos usuários e estarão disponíveis assim que reiniciarmos o Spank.Live.
Nosso plano é manter o camsite para baixo durante os próximos 2-3 dias (mas possivelmente mais) enquanto nós:
- Reimplante o contrato inteligente de canal de pagamento com um patch para evitar futuras hacks
- Atualize o Spank.Live para usar o novo contrato de canal de pagamento
- Airdrop ETH equivalente a 100% do ETH+BOOT perdido por cada usuário para suas contas SpankPay
- Corrigir os bugs que estávamos originalmente trabalhando em torno da atualização BOOTE
Quando reiniciarmos o Spank.Live, todos os espectadores e artistas terão 100% do valor total em BOOT+ETH que tinham em seu SpankPay airdropped para seus endereços SpankPay atuais, para que os usuários não precisem fazer nada.
O site continuará a funcionar exatamente como era antes, com uma única exceção - por causa do 4.000 BOOT atualmente imobilizado, vamos reduzir temporariamente o limite de BOOT para cada espectador para 10 BOOT. Isto significa que os espectadores só serão capazes de dar gorjeta 10 BOOT de cada vez, e ao gastar todos os 10 BOOTES eles vão recarregar automaticamente o seu 10 BOOT com qualquer ETH extra que tenham depositado, até que esgotem completamente o seu saldo ETH.
Nos próximos dias, a nossa equipa está a preparar uma investigação aprofundada do ataque.
Aqui está o que sabemos até agora:
Em suma, o ataque capitalizou um bug de “reentrada”, muito parecido com o explorado no DAO. O invasor criou um contrato malicioso mascarado como um token ERC20, onde a função de “transferência” foi chamada de volta ao contrato de canal de pagamento várias vezes, drenando algum ETH de cada vez.
O contrato malicioso primeiro chamou CreateChannel para configurar o canal e, em seguida, chamou LCopEntimeout repetidamente via reentrada. O LcopenTimeout existe para permitir que os usuários saiam rapidamente dos canais de pagamento que ainda não foram aderidos pela contraparte.
O LCopenTimeout transfere ao usuário seu saldo inicial de depósito ETH e seu saldo de depósito token, ambos inicialmente definidos na função CreateChannel. Criticamente, a função LcopenTimeout exclui apenas os dados do canal na cadeia (que zeram os balanços de canal) após a função de transferência de token. Isso permite que a função de transferência do contrato malicioso chame LcopenTimeout em um loop, sempre enviando o atacante ETH equivalente ao saldo de seu canal.
Contrato do canal de pagamento: https://etherscan.io/address/0xf91546835f756da0c10cfa0cda95b15577b84aa7#code
Endereço do invasor: https://etherscan.io/address/0xcf267ea3f1ebae3c29fea0a3253f94f3122c2199
Txs internos (reentrada) da conta do invasor: https://etherscan.io/address/0xcf267ea3f1ebae3c29fea0a3253f94f3122c2199#internaltx
Contrato malicioso do atacante: https://etherscan.io/address/0xc5918a927c4fb83fe99e30d6f66707f4b396900e
Txs internos (reentrada) do contrato malicioso do atacante: https://etherscan.io/address/0xc5918a927c4fb83fe99e30d6f66707f4b396900e#internaltx
Foi nossa decisão renunciar a uma auditoria de segurança para o contrato do canal de pagamento. Nós realmente fizemos Zeppelin realizar uma auditoria que custou US $17 mil para a biblioteca de canais de pagamento unidirecionais anterior. Consideramos isso bastante caro, dado que o maior número de fundos já detido por esse contrato só chegou a US $17 mil no total.
Para este contrato de canal de pagamento sem custódia muito mais sofisticado, fomos citados US $30.000 a US $50.000 para auditorias de segurança, mas levando em conta tanto o valor de percepção quanto o custo de oportunidade do tempo gasto em reagir ao hack, teria valido a pena. Isso é devido ao nosso processo de desenvolvimento ágil, o site estar em beta e a rapidez com que estamos iterando e reimplantando os contratos (dos quais estamos empurrando a cada 2-3 semanas). Isso identificou um problema em nosso processo de desenvolvimento e implantação, e faremos as alterações apropriadas para ajudar a garantir que isso não aconteça novamente - enquanto ainda inovamos no ritmo com que todos estão familiarizados.
À medida que avançamos e crescemos, estaremos intensificando nossas práticas de segurança e nos certificando de obter várias auditorias internas para qualquer código de contrato inteligente que publicarmos, bem como pelo menos uma auditoria externa profissional.”
Disclaimer: The views and opinions expressed by the author should not be considered as financial advice. We do not give advice on financial products.