S’han trobat habilitats de Scammy al codi de contracte Bitfinex LEO ERC20
És molt sabut que els contractes intel·ligents poden ser complicats. Les persones no tècniques tenen la temptació de comprar un testimoni ERC20 basat en el nivell d’expressió, sense cap coneixement previ sobre la qualitat del testimoni i la seguretat del testimoni que compren..
Bitfinex, un dels intercanvis de criptografia més grans de la indústria, ha emès un testimoni anomenat LEO. Aquest testimoni permet a l’entitat que el controla imprimir o encunyar noves fitxes il·limitades, també els permet suprimir les monedes de qualsevol persona, incloses, entre d’altres, les centrals o descentralitzades, l’emmagatzematge en fred o en calent, la cartera de maquinari o programari i / o cartera de paper o cervell.
No us deixeu enganyar, comprar un ERC20 no significa que els vostres actius siguin realment vostres. No és la primera vegada que exposo un contracte tan intel·ligent. La setmana passada vam publicar a Cointelligence un informe sobre un contracte intel·ligent similar que permet la mateixa funcionalitat. Consulteu la nostra ressenya sobre QUAN el contracte intel·ligent..
El contracte LEO ERC20 permet estafar i / o frau amb milions de dòlars??
Deixem que decidiu, ara aprofundim en el testimoni LEO.
Introducció
LEO és un testimoni ERC20 introduït el 10 de maig de 2019 per iFinex Inc. a el seu anunci. Podeu trobar el Llibre blanc LEO aquí. Tot i que no hem pogut trobar un dipòsit de GitHub, el seu codi de contracte de fitxes s’ha verificat a Etherscan. Hem utilitzat el codi verificat d’Etherscan per a LEO, LeoController i TokenFactory per provar i desplegar una còpia d’aquest testimoni a Ropsten testnet.
Token LEO – El testimoni ERC20 emès per Unus Sed Leo Limited, filial d’iFinex Inc..
Controlador – El contracte del controlador permet al propietari transferir, aprovar, emetre, gravar i canviar el propi controlador. Tingueu en compte també que, tot i que el contracte “0xf17ebb3a24dc6d6b56d38adf0df499c1cd9e5672” actualment “controla” el contracte LEO ERC20, el propietari pot actualitzar o canviar fàcilment a qualsevol adreça en qualsevol moment, de manera que els permet fer pràcticament qualsevol cosa amb el testimoni LEO..
Contracte LEOController: el propietari pot canviar el “Controlador” del contracte LEO ERC20
El Controlador LEOC el propietari del contracte pot canviar el “controlador” en qualsevol moment del temps i configurar-lo a qualsevol adreça de cartera que controli.
- Cridant la funció “upgradeController” a la línia 698 i introduint qualsevol adreça de cartera que trieu.
- Un cop confirmada la transacció anterior, l’adreça introduïda es convertirà en el nou “controlador” del contracte LEO ERC20.
Contracte LEO: el propietari pot cremar les vostres fitxes i crear noves fitxes il·limitades
Com podria el propietari de LEO seguir encunyant fitxes per sempre?
Com s’ha explicat anteriorment, un cop canviat l’adreça del controlador a una adreça de cartera (o fins i tot un nou contracte intel·ligent), simplement podrien trucar a la funció “generateTokens” a la línia 460.
Paràmetres
- _ propietari → La cartera que rebrà els tokens LEO acabats d’encunyar.
- _mount → La quantitat de fitxes que cal “imprimir” que aniran a l’adreça anterior.
Nota – El llibre blanc LEO no esmenta quin és el màxim subministrament de fitxes i aquest contracte els permet seguir encunyant fitxes LEO ja que vam poder “imprimir” un bilió de fitxes LEO en un testnet mitjançant el seu codi.
Com podria el propietari de LEO eliminar les fitxes d’una altra persona?
La funció “destroyTokens” del 477 permet a la cartera del controlador LEO cremar les fitxes LEO de qualsevol persona, incloses, entre d’altres, les presents en un intercanvi centralitzat o descentralitzat, una cartera de maquinari o programari, emmagatzematge en calent o fred i / o un paper o cervell cartera. No importa on estiguin les vostres monedes, si ho volen poden eliminar-les. Tan simple com això.
Paràmetres
- _owner → La cartera des de la qual es cremaran les fitxes LEO existents.
- _mount → La quantitat de fitxes que cal “suprimir” de l’adreça de cartera esmentada anteriorment.
Més proves
Hem copiat exactament el mateix codi per al testimoni, el controlador i la fàbrica LEO ERC20 per desplegar el contracte següent al Ropsten testnet.
Carteres / adreces
- Adreça del remitent: 0x58FA58089956c5cba21d9f61434B1902F8121b32
- Adreça generada aleatòriament: 0xada183F6Ff6E7805EE5bDA701d40958858FeE548
Primer vam canviar el controlador de l’adreça del remitent a una còpia de “LEOController” per veure si podríem tornar a canviar el controlador a l’adreça del remitent mitjançant la funció “upgradeController”..
Passos
- Fàbrica de tokens Desplegat
- Token LEO Desplegat
- Controlador LEOC Desplegat
- Comprovat qui és realment el “controlador” del contracte de token LEO: 0x58FA58089956c5cba21d9f61434B1902F8121b32.
- S’ha canviat el controlador mitjançant la funció “changeController” del contracte LEO per desplegat prèviament Contracte “LEOController”
- S’ha confirmat que el controlador s’ha canviat a l’adreça intel·ligent del contracte.
En aquest moment, el nostre contracte LEO testnet és exactament similar al contracte LEO ERC20 de les maneres següents
- El controlador del contracte LEO és un contracte intel·ligent.
- El codi del controlador a testnet coincideix exactament amb l’un a mainnet.
Ara, intentem determinar:
- Si podem cremar o destruir les fitxes LEO d’una altra persona canviant primer el controlador.
- Si podem emetre una quantitat increïblement gran de testimoni LEO per veure si hi ha un límit.
Passos
- Tot i que, en aquest moment, sabíem que no era possible que el propietari canviés el controlador del contracte “LEO” mitjançant la funció “changeController”, encara vam enviar intencionadament aquesta transacció perquè es revertís o fallés. Fracassat
- Vam anar al contracte “LEOController” i vam utilitzar la funció “upgradeController” per canviar de nou el controlador del contracte intel·ligent controlat, és a dir, LEO, a l’adreça del remitent. Ha tingut èxit
Nota – que vam canviar el controlador del remitent a un contracte intel·ligent i tornar-lo al remitent perquè volíem demostrar-vos que és molt fàcil canviar el controlador en un testnet (i per a ells en el mainnet).
Emissió de fitxes
Com que el remitent torna a ser el controlador del contracte LEO, pot accedir a les funcions del contracte LEO “generateTokens” i “destroyTokens”. Hem generat una adreça de cartera aleatòria “0xada183F6Ff6E7805EE5bDA701d40958858FeE548” per enviar-nos-en una bogeria gran quantitat de tokens LEO 1.000.000.000.000.000.000.000.000.000.000.000.000.000 (un undecillion) LEO transferit.
Fitxes enceses
Volíem determinar si nosaltres (el remitent) podíem eliminar o destruir les fitxes de l’adreça aleatòria 0xada183F6Ff6E7805EE5bDA701d40958858FeE548 que vam generar prèviament.
En la transacció anterior, hem cremat / eliminat / destruït amb èxit 10.000.000.000 (deu mil milions) de fitxes de la cartera d’una altra persona o d’una adreça que no teníem.
Es pot veure que la direcció “0xada183F6Ff6E7805EE5bDA701d40958858FeE548” ara té un saldo de 999,999,999,999,999,999,999,999,990,000,000,000 (nou-cents el noranta per-de nou Decillion nou-cents el noranta per-de nou nonillion nou-cents el noranta per-de nou octillion nou-cents el noranta per-de nou septillón nou-cents el noranta per-de nou trilions , nou-cents noranta-nou quintilions, nou-cents noranta-nou quadrilions, nou-cents noranta-nou bilions, nou-cents noranta mil milions) testnet només fitxes LEO.
Comparació de contractes | |||
LEO | Original | Testnet | Dif |
MiniMeTokenFactory | Original | Testnet | Dif |
Controlador LEOC | Original | Testnet | Dif |
TLDR: Com em afecta això??
Paolo Ardoino, CTO de Bitfinex, va respondre al nostre tuit que resumeix aquest problema, dient:
“Per raons de seguretat i proves futures, també vam deixar la possibilitat d’actualitzar el contracte de token. Aquesta és realment una característica clau per a un contracte que pot viure molts anys. Encunyar més fitxes simplement no tindria sentit per a Finex … com disparar-nos el peu. “
No només ens va encantar el seu tweet, sinó que també voldríem agrair-li públicament la seva resposta, perquè creiem que així podem fer-nos responsables i ajudar a guiar aquesta indústria cap a un futur millor.
Ara tornem al negoci. Tingueu en compte que els contractes intel·ligents estan dissenyats per ser confiants. Bitfinex trenca la confiança aquí posant una porta posterior aquí, que els dóna un bitllet per enganyar sempre que ho necessitin, amb un avantatge injust sobre persones com tu i jo. De forma reiterada al llarg de tot aquest article, l’únic fet que hem assenyalat és la seva capacitat d’encunyar qualsevol quantitat de monedes LEO (o il·limitades) a la seva discreció i eliminar qualsevol moneda de cartera, ara o en el futur..
Per resumir i simplificar-ho tot per als nostres lectors no tècnics, no negem ni qüestionem la capacitat del contracte intel·ligent de ser millorable. El problema aquí no és tècnic, sinó filosòfic. Si està bé que Bitfinex pugui fer el que pot fer amb LEO, també ho entenem i respectem el seu punt de vista. Però per a nosaltres, LEO no juga bé amb l’esperit i la filosofia de blockchain perquè poden dictar termes. A més, basant-nos en la nostra comprensió defectuosa i humil, una criptomoneda:
- Ha d’estar obert a tothom. Podeu anar i venir com vulgueu. ✓
- Ha de ser just. Ningú no hauria de tenir cap avantatge injust sobre ningú més. ✘
- Ha de ser inclusiu. No s’ha de restringir a ningú independentment del que diguessin o fessin o d’on vinguessin, sinó que fos totalment indiferent "OMS" són o "què" possiblement es podrien convertir. ✘
- Ha de ser resistent a la censura si no lliure de censura. A ningú se li ha d’aturar l’ús o l’accés a cap característica en un moment determinat. Quan es tracta d’una xarxa blockchain (contracte intel·ligent en aquest cas), fins i tot els actors dolents com els estafadors, els pirates informàtics i els estafadors haurien de ser tractats de manera no censurada, de manera inclusiva, equitativa, oberta i equitativa. Si no podeu censurar els mals actors a Bitcoin, per què ho podríeu fer a LEO? La “actualització” no justifica la “capacitat” de dictar termes. ✘
- Ha de ser immutable. El que hagi passat hauria de romandre allà per sempre perquè tothom i tothom pugui validar-ho, estar-hi d’acord o en desacord. ✓
- La xarxa s’hauria de descentralitzar. No hauria d’haver cap entitat central que pogués dictar termes sobre el que hauria de passar. Tot i que la xarxa Ethereum està descentralitzada, el contracte de token LEO no és perquè poden dictar termes. ✘
- S’ha de distribuir. Tothom hauria de ser capaç d’obtenir l’historial de la xarxa i validar l’autenticitat de les dades. ✓
La gent confia en blockchain perquè no té confiança. La naturalesa de confiança del blockchain va fer que gent com tu i jo estiguéssim interessats en aquesta tecnologia increïble.
No mantenim rancúnies contra Bitfinex a nivell personal, però no ens fa por apuntar-los amb els dits quan creiem que estan equivocats i que necessiten fer el correcte. Oferim una solució a Bitfinex per crear un nou testimoni sense aquestes funcions i canviar-les amb els inversors. Aquesta acció per si sola podria augmentar la confiança dels inversors en el testimoni LEO.
Finalment, aquest debat pot anar en cercles perquè Bitfinex argumentaria que necessitaven “capacitat d’actualització” (de veritat?) I no acceptaríem simplement el fet que la moneda d’una altra persona es pugui suprimir encara que aquestes no fossin nostres. Per la present, us deixem el cas per a vosaltres, el nostre increïble lector, per decidir-vos i veure si voleu confiar en el contracte LEO ERC20.