Bine ați revenit la Sherlock's Vulnerability Spotlight, unde evidențiem o vulnerabilitate de impact descoperită în timpul unui audit Sherlock. Săptămâna aceasta, avem Deposit Spoofing. A fost descoperit de @0xalpharush & @bernd_eth la @zetablockchain Cross-Chain Contest. 🧵
Iată rezumatul vulnerabilității lui @bernd_eth: 1. Observatorii ZetaChain monitorizează tranzacțiile pe lanțuri externe (de exemplu, Ethereum, Solana) și le adaugă la un tracker centralizat pentru a le procesa ca depuneri și retrageri, presupunând succesul tranzacției. 2. Spre deosebire de integrarea EVM, implementarea Solana omite verificările de succes ale tranzacțiilor, permițând unui observator rău intenționat să adauge depozite eșuate, să emită ZRC20 SOL negarantat și să dreneze fondurile de punte. 3. În ciuda faptului că observatorii sunt în mod explicit pe lista permisă de ZetaChain, este esențial să ne asigurăm că nicio parte nu poate compromite lanțul sau sifona activele.
În mod normal, observatorii nu procesează tranzacțiile eșuate, dar această cale de cod nu reușește să efectueze aceeași validare ca omologul său EVM. Deși acest lucru necesită un rol "privilegiat", fiecare validator este un observator, iar consensul BFT ar trebui să fie tolerant bizantin, adică să tolereze <1/3 părți rău intenționate. Astfel, un observator rău intenționat nu ar trebui să fie capabil să falsifice un depozit și să determine validatorii onești să voteze pentru emiterea ZRC20 Sol pentru tranzacțiile eșuate prin intermediul trackerului de intrare, care nu are validări pentru implementarea sa Solana.
Cauza principală a acestei vulnerabilități: Funcția ProcessInboundEvents nu necesită ca o tranzacție să fi reușit, spre deosebire de observatorul de intrare EVM, care face acest lucru corect aici. Deoarece instrucțiunea este decodată ca și cum ar fi reușit, un observator rău intenționat poate falsifica un depozit pentru întregul sold ZRC20-SOL și apoi poate retrage SOL blocat în partea Solana a podului, furând toate porturile din pod. Acest atac ar putea fi folosit și pentru a retrage jetoane SPL sau pentru a efectua depuneri și apeluri arbitrare. De exemplu, eliminarea proprietății inscripționabile din PDA-ul gateway-ului în instrucțiunea de depunere are ca rezultat o tranzacție eșuată (consultați eroarea de constrângere de ancorare din POC) și poate fi procesată în continuare odată adăugată la trackerul de intrare prin MsgAddInboundTracker.
Precondiții interne: Un observator rău intenționat sau neglijent adaugă un Solana tx defect care conține instrucțiuni Gateway la trackerul de intrare folosind MsgAddInboundTracker, rezultând în procesarea și votul tuturor validatorilor pentru emiterea ZRC20 Sol pe Zetachain. CCTX primește suficiente voturi și este bătut ZRC20 Sol nesusținut pe Zetachain.
Precondiții externe: Orice parte trimite o tranzacție eșuată la gateway cu o instrucțiune de depunere (sau depunere și apel). Destinatarul ZRC20 Sol de pe Zetachain îl retrage și primește lamporturi pe Solana.
Calea de atac: 1) Orice parte trimite o tranzacție eșuată la gateway cu o instrucțiune de depunere (sau depunere și apel). 2) Un observator rău intenționat sau neglijent adaugă un Solana tx eșuat care conține instrucțiuni Gateway la trackerul de intrare folosind MsgAddInboundTracker, rezultând că toți validatorii procesează și votează pentru emiterea ZRC20 Sol pe Zetachain. 3) Sarcina ProcessInboundTrackers face ca CCTX-ul falsificat să primească suficiente voturi și se emite ZRC20 Sol nesusținut pe Zetachain. 4) Destinatarul ZRC20 Sol pe Zetachain îl retrage și primește lamporturi pe Solana.
Care este impactul? Toate lamporturile și tokenurile SPL depuse în puntea Solana pot fi furate, având în vedere că depozitele pot fi falsificate pentru orice sumă (acestea sunt procesate în ciuda faptului că programul Gateway provoacă revenirea tranzacțiilor).
Atenuarea: În procesarea trackerului de intrare al Solana Observer, verificați dacă tranzacția are succes înainte de a o vota.
Suntem mândri că am ajutat la asigurarea @zetablockchain prin această descoperire. Când trebuie neapărat să fie sigur, Sherlock este alegerea potrivită.
2,56K