Od: Myšlení
Pozadí
Jak se ekologický projekt TON zahřívá, na ekologické bojiště TON začaly vstupovat také phishingové gangy Web3. V současné době se TonConnect SDK používá v ekosystému TON k řešení problému propojení a interakce mezi platformami/aplikacemi. Taková řešení nevyhnutelně narazí na problém: jak vyřešit ověření doménového jména při komunikaci mezi platformami/aplikacemi?
Obvykle, aby uživatelé mohli používat peněženku k připojení k DApp nebo k potvrzení, zda je zdroj žádosti o podpis spolehlivý, peněženka vyzve na stránce schválení žádosti název domény zdroje, aby uživatelé mohli lépe ověřit a potvrdit, zda je zdroj požadavku konzistentní se zdrojem jejich operace. Tím se zabrání tomu, aby byly podvedeny požadavky na podpis ze škodlivých zdrojů.
Bezpečnostní tým SlowMist již dříve objevil problémy se zabezpečením ověřování doménového jména v meziplatformní/aplikační komunikaci mezi tímto typem peněženky a DApp Komunikovali jsme a komunikovali s projektovými týmy MetaMask SDK a WalletConnect Web3Modal a zjistili jsme, že tento problém je obtížné řešit. s. MetaMask a WalletConnect proto tento problém ještě plně nevyřešily.
Nedávno jsme zjistili, že TonConnect SDK v ekosystému TON má také stejný problém, takže jej zde zveřejňujeme v naději, že pomůžeme uživatelům identifikovat taková rizika a předcházet jim.
analyzovat
Když peněženka rozšíření prohlížeče interaguje s DApp, obvykle se do webové stránky vloží skript JS (skript obsahu), který přepošle zprávy mezi webovou stránkou a rozšířením prohlížeče. Když webová stránka komunikuje s obsahovým skriptem, použijí se window.postmessage a window.addEventListener a window.addEventListener může zprávu dále zpracovat získáním původu zprávy. Konkrétní operace zahrnuje zobrazení původu zprávy v prohlížeči rozšíření peněženky a určení původu zprávy, zda je na černé listině, provést ověření a další operace s původem zprávy. Protože původ závisí na funkcích poskytovaných prohlížečem, aby jej získal, nelze jej zfalšovat.
Při komunikaci mezi platformami/aplikacemi jsou však zprávy obvykle přeposílány přes server pro přeposílání zpráv a pro server pro přeposílání zpráv je obtížné zkontrolovat název domény, ze které je zpráva iniciována (protože klientská data mohou být zfalšována), takže existuje problém se zdrojem falšované zprávy, jsou zde 2 scénáře pro komunikaci zpráv napříč platformami/aplikacemi:
Webová stránka prohlížeče <=> Server pro předávání zpráv <=> Wallet APP
Jiná aplikace <=> Server pro předávání zpráv <=> Aplikace Peněženka
Vezměte TonConnect SDK jako příklad. DApp používá TonConnect SDK jako nástroj pro komunikaci mezi peněženkou a DApp. Při přístupu k TonConnect SDK je však potřeba konfigurovat data dappMetadata platnou úpravou dappMetadata, a tím podvedením uživatelů.
Můžete předstírat původ ton.org nastavením manifestu.json na následující obsah:
Následuje PoC po nasazení výše uvedeného kódu. Dále naskenujeme a analyzujeme QR kód.
TonConnect SDK předává data manifestUrl do aplikace peněženky prostřednictvím QR kódu, na rozdíl od jiných sad SDK, které je předávají přes server pro přeposílání zpráv. Aplikace peněženka analyzuje data manifestUrl získaná skenováním. Lze zjistit, že můžeme snadno zfalšovat původ jakéhokoli DApp pro komunikaci s peněženkou Jinými slovy, útočníci mohou tuto chybu použít k vytvoření známých DApp k provádění phishingových a podvodných útoků.
https://app.tonkeeper.com/ton-connect?v=2&id=24e3f2fdbea19fcd4fe03da3bc3d534d8b988edd01736f0b127a70cf2c531661&r={"manifestUrl":"sson"{101}"connectemtonsfest.page jméno":"ton_addr"}]}
Po úspěšném připojení zahájí podepsaný DApp aplikaci pro podpis prostřednictvím TonConnect. Jakmile uživatel potvrdí, peněženka odešle podepsaná data do blockchainu. Protože padělání původu je extrémně klamavé, je pro uživatele obtížné identifikovat původ připojení a požadavků na podpis.
V MetaMask SDK můžete úpravou dappMetadata z ní udělat dobře známou DApp a provádět phishingové a podvodné útoky:
Podobně v WalletConnectModalSign stačí upravit metadata:
Shrnout
Vzhledem k tomu, že v současné době neexistuje žádné dobré řešení problému ověřování názvu domény v meziplatformní/aplikační komunikaci mezi běžnými peněženkami a DApps, projekty SDK obvykle přidávají některé další ověřovací metody, jako je: mechanismus ověření WalletConnect (https://docs.walletconnect . com/cloud/verify), poté, co DApp projde ověřením názvu domény, může peněženka použít rozhraní Verify API k určení, zda je název domény důvěryhodný.
Mnoho běžných DApps však názvy domén neověřuje, takže toto řešení je obtížné vyřešit falešnými phishingovými útoky. Pokud naprostá většina DApps používá Verify k ověřování názvů domén, uživatelé budou do značné míry chráněni před stále se rozmáhajícími falešnými phishingovými útoky. Bezpečnostní tým SlowMist tímto také doporučuje, aby uživatelé věnovali pozornost tomu, aby zjistili, zda je webová stránka, kterou otevírají, v souladu s názvem domény požadovaným ke schválení, aby se takovým útokům předešlo.


