Autor original: clientes ligeros

Fuente original: twitter

Compilado por: MetaCat

Después de EIP-3074, una mala firma puede agotar el saldo de su cuenta Ethereum.

Sí, es verdad.

¡Los coautores de EIP-3074 están aquí! Antes de que las cosas se salgan aún más de control, permítanme dejar de lado esta preocupación por un momento.

En primer lugar: actualmente no he oído hablar de ninguna billetera que admita la firma de datos sin prefijo. Esto significa que actualmente ninguna billetera admite EIP-3074. No importa cuántos paneles de control navegue o cuántas funciones avanzadas active. El mensaje para EIP-3074 no se puede firmar en este momento.

El mensaje que firma para "iniciar sesión" en la dapp utiliza un estándar completamente diferente al EIP-3074, basado en EIP-191. Esto agregará los siguientes datos a su mensaje firmado:

0x19 <0x45 (E)> <thereum Mensaje firmado:\n" + len(mensaje)> <data para firmar

Esta es la razón por la que es imposible engañar a alguien que haya iniciado sesión en una dapp para que firme una transacción Ethereum válida.

Las transacciones tienen como prefijo un valor de un solo byte:

0x01 - 2930 tx0x02 - 1559 tx0x03 - 4844 tx

Para obtener más información, consulte: https://github.com/ethereum/execution-specs/tree/master/lists/signature-types

EIP-3074 planea usar el prefijo 0x04. Esto lo eliminará de todos los demás tipos de datos firmables en Ethereum. Las billeteras deben elegir activamente permitir a los usuarios firmar estos mensajes.

Según la forma específica en que la billetera integra EIP-3074, puede hacer que los usuarios sean más fácilmente explotados. Para comprender esto, debemos asegurarnos de comprender cómo funcionan las firmas EIP-3074.

El mensaje de autenticación que genera la firma tiene los siguientes campos. Es importante destacar que incluye una dirección de llamada. Esta es la única dirección en la que AUTH considera válida la firma.

Para que una cuenta agote su saldo, deben cumplirse ambas de las siguientes condiciones:

1) La billetera debe permitir a los usuarios iniciar sesión en cualquier dirección del invocador,

2) El usuario no debe verificar si la persona que llama (invocador) es confiable.

Esto significa que no habrá ningún problema si el usuario ejecuta alguno de ellos.

Queremos que el software de billetera entienda: los invocadores EIP-3074 son más similares a extensiones de código de software de billetera que a contratos. Las billeteras no permiten a los usuarios ejecutar libremente código arbitrario y acceder a sus PK (claves privadas). De manera similar, no deberían permitir a los usuarios delegar arbitrariamente sus cuentas de Ethereum;

Por lo tanto, si el software de billetera integra EIP-3074 de manera insegura y los usuarios no verifican a la persona que llama con la que están interactuando, puede delegar en una persona que llama maliciosamente. Sin embargo, aún se puede deshacer enviando una única transmisión desde EOA. Esto revocará todas las firmas AUTH "en curso".

Como mínimo, el software de billetera debería hacer que firmar mensajes EIP-3074 sea un gran problema, al igual que exportar su clave privada es un gran problema.

Suponiendo que la billetera integre 3074 de forma segura, aún es posible que una cuenta se vea comprometida. Ésta es la propiedad básica de las transacciones masivas. Le permite enviar múltiples acciones fácilmente, al igual que le permite a un atacante engañarlo para que envíe un lote de activos a una dirección que controla.

El software de billetera debe mostrar claramente cada acción que estás firmando. De esta manera, es fácil darse cuenta de que "solo tenía la intención de realizar una transacción, pero esta solicitud de firma me hizo realizar una docena de transacciones más". Esto no se puede detectar si el procesamiento por lotes se realiza mediante firma ciega.

Sí, EIP-3074 confía mucho en la billetera. Sin embargo, ¡ya les confiamos de forma segura nuestra clave privada! No hay mayor nivel de confianza.

EIP-3074 se puede integrar y utilizar de forma segura. Si alguna billetera tiene preguntas sobre cómo hacer esto, no dude en contactarnos. Como autores de EIP-3074, actualmente estamos considerando cómo podemos ayudar mejor en la siguiente fase de la evolución del estándar.

Hemos pasado mucho tiempo en los últimos años desarrollando escenarios hipotéticos sobre cómo se podría utilizar y abusar de él. Estamos entusiasmados de que estas ideas estén comenzando a pasar a producción. Pero también reconocemos que esta es la parte más difícil.

Para resumir la preocupación posterior a EIP-3074 de que una sola firma incorrecta podría agotar el saldo de su cuenta Ethereum:

- Actualmente la billetera no admite firmas de tipo EIP-3074, que siguen el nuevo formato.

- EIP-3074 El campo de la persona que llama en la firma es muy importante. Una mala persona que llama puede robarle sus fondos.

- La billetera debe garantizar que la dirección de la persona que llama sea confiable. Esto es similar a cómo las billeteras impiden actualmente la ejecución de código arbitrario.

- Las transacciones masivas en EIP-3074 aún abren un mundo donde actores maliciosos pueden engañarlo para que firme transacciones que transfieran activos. Las billeteras deben mostrar claramente lo que sucede cuando se firma un mensaje EIP-3074.

- Sí, tenemos un alto nivel de confianza en las billeteras, pero los usuarios les han confiado sus claves privadas, que es el nivel más alto de confianza.

EIP-3074 y EIP-4337

EIP-3074 es algo muy bueno para los proveedores de abstracción de cuentas porque es muy beneficioso para nuestros clientes.

- ERC-4337 es la mejor manera de presentar nuevos usuarios al espacio criptográfico.

- EIP-3074 es la mejor manera de incorporar usuarios existentes a cuentas inteligentes.