Mi pregunta se relaciona con una pregunta anterior sobre este stackexchange.
Detalles
Patrick usó Ethereum Wallet para transferir 1 éter para probar la compra de tokens TheDAO en su computadora de minería. Cuando (hasta ahora parece que) la billetera Ethereum desbloqueó su billetera geth durante 2 segundos (a través de la API de IPC, no expuesta a Internet), un bot que estaba observando la actividad de su billetera geth se abalanzó para enviar una instrucción de transferencia a geth (a través de JSON-RPC, expuesto a Internet) y transfirió los 7218 éteres restantes a la cuenta del hacker.
¿Se solucionó alguna vez este error o todavía está en la versión más nueva de mist? ¿Cómo puedo verificar si soy vulnerable a este ataque o no? ¿El desarrollador tuvo un motivo especial para implementarlo de esta manera o ni siquiera es posible implementarlo de otra manera?
El problema está relacionado con la seguridad de su nodo geth. No encuentro nada que deba arreglarse .
Mira, cuando haces una conexión IPC a tu nodo geth, puedes eliminar las API de RPC. SO, solo los procesos en su sistema pueden acceder a su nodo geth. Por lo tanto, ningún bot (si no se ejecuta en su servidor) puede enviar la transacción a su nodo geth.
En caso de que esté obligado a usar rpc
sobre IPC, el método preferido es usar 127.0.0.1
como rpcaddr
.
Sea muy específico sobre quién puede enviar llamadas RPC a su instancia geth. Entonces, en el caso más vulnerable cuando usa RPC y expone personal sobre RPC. Puede asegurarse de que ningún otro servidor, aparte del que está ejecutando su Dapp, pueda conectarse al nodo geth desde el lado del servidor.
EDITAR:
No estoy seguro del intervalo de 2 segundos. Si puede proporcionar alguna referencia sobre dónde leyó eso. Lo que sé de la documentación es:
La clave sin cifrar se mantendrá en la memoria hasta que expire la duración del desbloqueo. Si la duración de desbloqueo por defecto es de 300 segundos.
Siempre tiene la opción de anular el valor usando:
personal.unlockAccount(address, password, duration_in_seconds)
PD: siempre que tenga la opción de configurar los valores predeterminados, los valores predeterminados no importan mucho.
Flaqz
Prashant Prabhakar Singh
Flaqz
web3.personal.unlockAccount(Session.get('data').from, pw || '', 2, function(e, res){
. ¿Tienes una idea de por qué están hablando de dos segundos?Prashant Prabhakar Singh
privacidadisahumanright.eth
unlockAccount(...)
llamadasendTransaction(...)
ahora se reemplazó conweb3.eth.personal.signTransaction(...)
- github.com/ethereum/mist/blob/master/interface/client/templates/… . La transacción firmada ahora se genera dentro de Ethereum Wallet/Mist, y la transacción firmada se pasa ageth
. Ahora no es necesario que Ethereum Wallet / Mist desbloqueegeth
ninguna cuenta.