Para los desarrolladores, el mecanismo AUTH/AUTHCALL es muy atractivo. Permite crear llamadores para implementar diferentes estrategias de procesamiento por lotes (por ejemplo, admite múltiples nonces para un mejor paralelismo), modelos de extracción de gas, métodos complejos de extracción de cuentas, etc.
Esta flexibilidad se deriva de la gran libertad que este mecanismo otorga a los desarrolladores. El mecanismo AUTH/AUTHCALL no requiere que los desarrolladores sigan un patrón específico, pero requiere que los usuarios firmen un commit valor hash (la persona que llama analizará el contenido de la confirmación), lo que permite a los desarrolladores establecer restricciones basadas en la commit .
Sin embargo, esta flexibilidad viene a expensas de la seguridad. En este artículo, quiero presentar una alternativa más simple. Esta solución tiene la mayoría de las ventajas del mecanismo AUTH/AUTHCALL , pero el riesgo es mucho menor que este último.
¿Por qué es más riesgoso firmar un AUTH commit que firmar una transacción relacionada con un contrato con errores o malicioso?
Cuando un usuario firma una transacción relacionada con un contrato, se conoce el riesgo que asume, es decir, se pueden perder los activos bajo el control del contrato. Supongamos que un usuario firma una transacción de aprobación de un contrato ERC 20 que autoriza un contrato DEX malicioso. Este contrato DEX malicioso puede retirar todo el saldo del usuario en el contrato ERC 20. Sin embargo, no puede retirar tokens de otros contratos ERC 20 del usuario a menos que el usuario lo apruebe. Tampoco puede realizar otras acciones en nombre del usuario, ya que esto también requiere la aprobación exclusiva del usuario.
Por el contrario, EIP 3074 no solo requiere que los usuarios firmen un "cheque en blanco", sino que también asume que la persona que llama es honesta y no tiene vulnerabilidades. Una persona que llama malintencionada/vulnerable puede realizar cualquier acción en nombre del usuario: acceder a los activos que posee el usuario, votar en nombre del usuario, controlar los contratos de propiedad del usuario, etc.
CEO de MSCI: La empresa está investigando criptomonedas y productos relacionados con el clima: según las noticias del 24 de agosto, el CEO de MSCI dijo que la empresa está investigando criptomonedas y productos relacionados con el clima. Nota: MSCI (MSCI) es una empresa estadounidense de compilación de índices, y el Índice MSCI (Índice MSCI) es el índice de referencia más utilizado por los administradores de carteras globales. Según estimaciones de Morningstar, Bloomberg y eVestment, a partir de junio de 2015, alrededor de 10 billones de dólares estadounidenses en activos globales se compararon con el índice MSCI, y 97 de los 100 principales administradores de activos del mundo eran clientes de MSCI. [2021/8/24 22:32:51]
Peor aún, la persona que llama puede hacer algo malo en cualquier momento, ya que la implementación de nonce está bajo el control de la persona que llama. La implementación vulnerable/maliciosa de la lógica nonce podría reproducir transacciones pasadas del usuario. Si la lógica de otras partes de la verificación de commit también es vulnerable, la persona que llama puede usar esta implementación de lógica nonce para realizar cualquier operación en nombre del usuario. Incluso si se descubre la vulnerabilidad, el usuario no puede retirar el cheque en blanco. Esta cuenta externa (EOA) se ha visto comprometida permanentemente.
Es difícil escribir un programa de llamadas correcto, y estamos casi seguros de que las personas que llaman tendrán errores de vez en cuando, como lo demuestra la lista no exhaustiva de verificaciones/vulnerabilidades/circunstancias de las que las personas que llaman deben tener cuidado al final de EIP 3074. La lista seguramente crecerá, probablemente con un doloroso proceso de descubrimiento.
Además, un actor malicioso podría escribir un programa llamador aparentemente inocuo, pero dejar intencionalmente una vulnerabilidad sutil que el atacante no explotaría hasta que una gran cantidad de cuentas externas autorizaran al autor de la llamada.
La falla podría haber pasado desapercibida durante mucho tiempo si los atacantes no la hubieran explotado directa o inmediatamente para robar fondos de los usuarios.
El intercambio descentralizado malicioso EveSwap escribió un programa de llamadas para sus usuarios. Este programa de llamada proporciona a los usuarios financiación de gas mediante el lanzamiento aéreo de tokens EVE y lotes de aprobación del usuario y transacciones de transferencia.
China Telecom utiliza la tecnología blockchain para ayudar al desarrollo de la economía digital de Yunnan: El 4 de agosto, se llevó a cabo en Kunming el evento publicitario temático "Empresas centrales que ingresan a Yunnan" - China Telecom Yunnan Company Open Day. China Telecom Yunnan Co., Ltd. aprovecha la informatización para ayudar al desarrollo de la economía digital en la provincia de Yunnan En cuanto a la construcción y exploración de laboratorios de cadena de bloques, China Telecom Yunnan Co., Ltd., junto con el Instituto de Investigación de Beijing Telecom , CLP Wanwei, CLP Hongxin, etc., promueve y apoya esto La construcción del centro de capacidades de blockchain del proyecto local de blockchain está construyendo actualmente un sistema de información de intercambio de protección contra incendios inteligente basado en blockchain, y se centra en promover blockchain + alivio de la pobreza dirigido, blockchain + intercambio de datos gubernamentales creíbles y sistema de trazabilidad de cadena de bloque de información de seguridad alimentaria clave, gestión inteligente de viviendas de alquiler público, cadena de bloque + registros de salud/registros médicos y otros proyectos. (Diario de China) [2021/8/5 1:35:34]
El programa de llamada de EveSwap es aparentemente inofensivo y nunca robará los tokens del usuario, ya que se revelaría de inmediato.
Los usuarios están felices. Todas las transacciones fueron exitosas y las tarifas de transacción fueron económicas. Han sido unos meses sin incidentes.
Sin embargo, siempre que alguien use EveSwap para intercambiar el token de gobierno ALI de AliceSwap, los derechos de voto de AliceSwap del usuario se delegarán automáticamente a EveSwap.
Una vez que el número autorizado alcance cierto umbral, EveSwap secuestrará a AliceSwap a través de la propuesta de gobernanza.
Es poco probable que los usuarios de EveSwap noten este proceso, porque la transacción siempre es exitosa, pero eventualmente traerá un golpe devastador a AliceSwap.
EIP 3074 sugiere razonablemente que commit debe incluir chainid. Sin embargo, esto es impuesto por la persona que llama, no por el protocolo. Las personas que llaman con la misma dirección en otra cadena pueden omitir esta verificación (o verificaciones para el caso).
EveSwap se ejecuta en BobSpongeChain compatible con EVM, que admite EIP 3074. EveSwap implementa una persona que llama honestamente en BobSpongeChain.
Los usuarios usan esta persona que llama para realizar transacciones en BobSpongeChain y luego usan el puente para transferir activos a Ethereum.
EveSwap implementa otra persona que llama con la misma dirección en Ethereum usando la misma clave de implementación. Esta persona que llama en Ethereum no verifica la commit, solo propietarioSolo, y actúa como un proxy genérico AUTH/AUTHCALL para su propietario.
De esta forma, EveSwap puede secuestrar las cuentas externas de los usuarios en Ethereum y quitarles sus activos.
Los usuarios nunca han operado en Ethereum, y el programa de llamada que se ejecuta en BobSpongeChain se ha sometido a estrictas revisiones de seguridad. A pesar de esto, los usuarios perdieron todos sus activos.
Ethereum protege contra esto con la protección de repetición de EIP 155. AUTHCALL no tiene protección de reproducción. Dado que todos los controles de commit se dejan a la persona que llama, perdemos todas las protecciones de transacción que proporciona Ethereum. Los ataques son inevitables debido a las protecciones aleatorias. Para aceptar EIP 3074, el mensaje AUTH debe incluir el chainid de forma explícita, no como parte de la commit .
Mi propuesta es implementar un mecanismo más explícito que haga cumplir a nivel de protocolo lo que significa commit . Se escribirá la estructura de confirmación (como se describe en EIP 712), y la billetera presentará la confirmación en un formato legible por el usuario. Los usuarios pueden saber exactamente cómo se ve una transacción y estar seguros de que esta transacción no se reproducirá en ninguna cadena, sin depender del carácter y la capacidad del desarrollador del programa de llamada.
Una posible implementación:
AUTH reemplazará el commit hash con una estructura escrita que contiene una lista de llamadas autorizadas. Cada llamada especificará {nonce,to,gas,calldata,value,chainid}. La firma se verificará y la lista completa de llamadas autorizadas se almacenará en transacciones_autorizadas en lugar de la variable de dirección autorizada .
AUTHCALL obtendrá un nuevo índice de parámetros, que apunta a la dirección en la lista creada por el último AUTH .
El nonce de la dirección de usuario se incrementará con AUTHCALL . La persona que llama no almacena el nonce, sino el nonce real de la cuenta.
Beneficio:
Los usuarios pueden entender claramente la situación.
La seguridad está garantizada por el protocolo.
Aún se admiten las abstracciones de cuentas y lotes.
Desventajas:
La implementación de nonce no admite el paralelismo.
Las transacciones para programas de llamadas complejos pueden ser engorrosas porque el usuario debe revisar y aceptar la lista completa de llamadas.
Diferentes implementaciones pueden admitir diferentes esquemas nonce. Sin embargo, cualquiera que sea el mecanismo que usemos, ese mecanismo debe ser implementado por el protocolo, no por la persona que llama.
En cualquier caso, se deben evitar las llamadas complejas que realizan una gran cantidad de llamadas de usuarios. Las operaciones complejas deben implementarse como contratos inteligentes ordinarios, en lugar de intentar implementar algoritmos que utilicen varias llamadas de cuentas externas.
También hay una opción para evitar el mecanismo AUTH por completo y resolver el problema de extracción y procesamiento por lotes de la cuenta con un grupo de transacciones alternativo como lo sugiere vbuterin
No se requiere bifurcación dura, respaldada por contratos inteligentes y nodos que conocen esos contratos inteligentes.
Se puede usar con cualquier implementación que admita EIP 3074 sin introducir riesgos adicionales.
No es compatible con versiones anteriores de cuentas externas existentes. Los usuarios deben implementar una billetera de contrato y transferir activos a la billetera.
A menos que exista un requisito para admitir cuentas externas existentes sin migración, esta opción parece más segura.
Tags:
Swarm se hizo popular repentinamente, pero con el final de la oferta pública de Coinlist y el lanzamiento de la red principal, la popularidad volvió a caer repentinamente.Recientemente.
Si Bitcoin es más una "moneda global" o más un "oro digital" siempre ha sido un tema de debate.
Datos DeFi 1. El valor de mercado total de DeFi: 66.
Para los desarrolladores, el mecanismo AUTH/AUTHCALL es muy atractivo. Permite crear llamadores para implementar diferentes estrategias de procesamiento por lotes (por ejemplo.
Capa 2 es un término general para soluciones diseñadas para ayudar a escalar aplicaciones mediante el procesamiento de transacciones en la red principal de Ethereum (Capa 1).
1. Observación Dorada | Bitcoin está "asediado por todos lados" y muchos multimillonarios siguen apostando por BitcoinEn general.
Noticias de la red de pagos móviles: el 28 de junio, la aplicación oficial del Metro de Beijing, Yitongxing.