Pereiti prie pagrindinio turinio

Šešioliktainiai duomenys + 0 sumos sandoris: nematomi grandinėje turto praradimo spąstai

Paspaudėte „Patvirtinti" 0 ETH sandoryje ir staiga turtas dingsta. Nėra jokio akivaizdaus įspėjimo ir įprasto perdavimo įrašo. Problema gali slypėti tame paraše.

U
Parašė UKey Wallet

1. Tylus košmaras

Per pastaruosius metus matėme, kad daugelis vartotojų iš karto prarado savo piniginės turtą ir mažai perspėjo.

Dar labiau stebina tai, kad užpuolikui net nereikia pirmiausia inicijuoti įprasto perdavimo.

Tai, ko jiems reikia, gali būti tik operacijos parašas su „hex duomenimis".

Tai gali atrodyti kaip paprasta operacija: gaukite NFT, prisijunkite prie „airdrop", prisijunkite prie DApp arba prisijungti svetainės.

Atrodo nekenksmingas: 0 ETH, išsiųstas išmaniosios sutarties adresu.

Tačiau tikroji grėsmė slypi „hex duomenyse".

Užpuolikas čia užkoduotų kenkėjiškų funkcijų iškvietimus, pavyzdžiui:

· approve()

· increaseAllowance()

· transferFrom()

· setApprovalForAll()

· sweepToken()(Tinkinta kenkėjiškų sutarčių funkcija)

Praradus šias funkcijas, turto valdymas gali būti perduotas užpuolikams.

Kai parašas bus baigtas, kita šalis gali perduoti jūsų ERC-20 žetonas arba NFT pakartotinai nepatvirtinusi.


2. Šešioliktainiai duomenys neturėtų būti akloji zona

Daugelis grandinėje operacijų gali būti vienkartinės, net jei jos neperduoda turto Išmanusis sutarties skambutis.

Vadinamieji „šešioliktainiai duomenys" paprastai yra „metodas + parametrai", užkoduoti ABI.

Pavyzdys:

0xa9059cbb00000000000000000000000008e8...000000000000000000000000000000000000000000000000000000005f5e100

· Pirmieji 4 baitai 0xa9059cbb: funkcijos parinkiklis, šiuo atveju transfer(address,uint256)

· Likusieji: užkoduoti parametrai, tokie kaip žetonas adresas, gavimo adresas, skaitinė reikšmė ir kt.

Užpuolikui tai gali tapti įėjimo tašku vykdyti kenkėjišką logiką.

Vartotojui, kuris nesupranta techninių detalių, tai tiesiog atrodo kaip beprasmė simbolių eilutė.

Štai kur slypi spąstai: aklas parašas.

Vartotojų akimis, tai gali būti tik 0 sumos sandoris; Sutartyje, kurią sukūrė užpuolikas, tai gali būti didelės rizikos patvirtinimas grupė.


3. Aklieji parašai, šešioliktainiai parašai ir parašų pragaras

Tokie rizikingi sandoriai turi keletą bendrų bruožų:

· 💸 0 ETH arba nedidelės operacijos: Nuleiskite apsaugą.

· 🧬 Hex duomenys, slepiantys didelės rizikos skambučius: Užmaskuotas kaip paprasta operacija.

· 🧠 Imtuvas yra išmanioji sutartis: Tai nėra įprastas asmeninis adresas, tai gali būti kenkėjiška sutartis.

· ⚠️ Parašas = Vykdyti: vienas patvirtinimas gali suaktyvinti patvirtinimas arba turto perkėlimą.

Dar labiau vargina: Tokio tipo atakos gali būti labai automatizuotos.

Užpuolikai naudos scenarijus norėdami platinti kenkėjiškas sutartis dideliu mastu, paleisti sukčiavimas svetainę, generuoti didelės rizikos nuorodas ir reklamuoti šiais būdais:

· Reklama paieškos sistemose

· Nesantaika grupė

· „Twitter" / X atsakymas

· Netikros dovanos ir NFT oro lašeliai

Kai vartotojas spustelėja patvirtinimą, vienas parašas gali perduoti turtą kitai šaliai.


4. Kaip UKey užtikrina apsaugą

Saugumas neturėtų būti tik vartotojo atsakomybė. UKey kuriamas Keli gynybos sluoksniai, kad padėtų nustatyti šią paslėptą riziką.

Šiuo metu toliau stiprinsime apsaugą šiais aspektais:


(1) Šešioliktainių duomenų įspėjimas: pirmasis priminimas

Kai vartotojas transakcijoje Įjungta pasirenka parinktį „Rodyti šešioliktainius duomenis", UKey iš karto parodys aiškų priminimą:

⚠️ Šioje operacijoje yra šešioliktainių duomenų ir ji gali apimti išmaniąją sutarties sąveiką arba žetonaspatvirtinimas. Prašome atidžiai patvirtinti.

Tai ne potraukis, o prieš pasirašant. Aktyvi apsauga.

Prašome vartotojų pristabdyti ir patvirtinti prieš pasirašant: šešioliktainiai duomenys yra savaime galingas įrankis, tačiau jie taip pat gali būti įvesties taškas, leidžiantis rizikuoti kenkėjiškų scenarijų atveju.


(2) Šešioliktainė duomenų analizė + didelės rizikos funkcijos priminimas

EVM grandinėms suteikia UKey Realaus laiko ABI dekodavimas + funkcijų rizikos analizė:

· Aiškiai parodykite iškviečiamą metodą

· prieš pasirašant Pažymėkite didelės rizikos elgesį, įskaitant:

o 🧾 Tikslinio adreso identifikavimas: Ar tai žinoma saugumo sutartis, ar įtartinas adresas?

o 🕵️ istorinė sąveika:Ar anksčiau bendravote šiuo adresu?

o 💰 žetonas ir suma: Ko iš tikrųjų norite patvirtinimas ar siųsti?

Tokiu būdu vartotojai gali matyti tikrąjį kontekstą prieš pasirašydami, o ne tiesiog susidurti su neiššifruojamų šešioliktainių duomenų eilute.


(3) aparatinės įrangos piniginė patvirtinimas

Naudokite UKey Pro Nereikia tik spoksoti į neapdorotą šešiakampę eilutę.

Galite matyti savo įrenginio ekrane Tikra, skaitoma informacija:

· 🔍 funkcijos pavadinimas – Žinokite, ką iš tikrųjų pasirašote.

· 💵 žetonas tipas ir kiekis: Ar iš patvirtinimas išskaičiuojate visą likutį?

· 📍 paskirties adresas: Ar tai pažįstamas adresas, ar rizikos signalas?

Kiekviena informacija gali padėti jums sukurti aiškesnis sprendimas, Sumažinkite klaidingą ženklinimą ir klaidingą vertinimą.


5. Baigiamieji žodžiai

grandinėje operacijų paprastai negalima „anuliuoti". Kiekvienas parašas turi būti kruopščiai patvirtintas.

Taip pat suprantame, kad vartotojams lengva galvoti taip:

„Maniau, kad tik prijungiu piniginę. . . "

Todėl mes projektuojame kiekvieną UKey sluoksnį Tikra vartotojo apsauga Įdėkite jį į svarbią padėtį.

Kiekvienas parašas yra pasitikėjimo sprendimas. UKey padės pamatyti daugiau rizikos informacijos prieš patvirtinant.

Ar gavote atsakymą į savo klausimą?