请输入关键字:

热门搜寻:

TON生态火爆,需警惕TonConnect SDK 的Origin伪造风险

日期:2024年7月31日 下午12:00

By: Thinking

背景

随着 TON 生态项目的升温,Web3 钓鱼团伙也开始进入 TON 生态的战场。目前 TON 生态中使用 TonConnect SDK 来解决跨平台/应用钱包连接和交互的问题,这类方案都难免会遇到一个难题:如何解决跨平台/应用通讯时的域名验证?

通常为了能够让用户在使用钱包连接 DApp 或确认签名请求的来源是否可靠时,钱包都会在请求批准页面提示来源的域名,便于用户更好地验证并确认请求的来源是否与自己操作的来源一致,从而避免遭受恶意来源签名请求的欺诈。

慢雾安全团队此前就发现过这类钱包和 DApp 跨平台/应用通讯时的域名验证安全问题,我们跟 MetaMask SDK 和 WalletConnect Web3Modal 的项目方团队进行了沟通和交流,发现该问题较难处理。因此,目前 MetaMask 和 WalletConnect 尚未完全解决这个问题。

近日,我们发现 TON 生态中的 TonConnect SDK 也存在相同的问题,于是在此披露,希望可以帮助用户识别和防范这类风险。

分析

通常浏览器扩展钱包和 DApp 进行交互时会在网页上注入 JS 脚本(content script),用于转发网页和浏览器扩展之间的消息。网页和 content script 进行通讯时使用的是 window.postmessage 和 window.addEventListener,而 window.addEventListener 可以通过获取消息的 origin 来进一步处理消息,具体操作包含在浏览器扩展钱包展示消息的 origin,判断消息的 origin 是否在黑名单内,对消息的 origin 进行鉴权等操作。由于 origin 依赖浏览器提供的函数功能来获取,因此无法被伪造。

然而跨平台/应用消息通讯时,通常通过消息转发服务器对消息进行转发,而消息转发服务器很难对消息发起的域名进行检查(因为客户端的数据可以被伪造),因此存在消息来源被伪造的问题,以下是跨平台/应用消息通讯的 2 个场景:

  • 浏览器网页 <=> 消息转发服务器 <=> 钱包 APP
  • 其它 APP <=> 消息转发服务器 <=> 钱包 APP

以 TonConnect SDK 为例,DApp 使用 TonConnect SDK 作为钱包和 DApp 进行消息通讯的工具,需要在接入 TonConnect SDK 的时候配置好 dappMetadata,然而 dappMetadata 的数据是难以验证的,恶意 DApp 可以通过修改 dappMetadata 伪装成可信的网站,从而对用户进行欺诈。

import { SendTransactionRequest, TonConnect, UserRejectsError, WalletInfo, WalletInfoInjected } from '@tonconnect/sdk';import { notification } from 'antd';import { isMobile, openLink } from 'src/utils';

const dappMetadata = { manifestUrl: 'https://x.x.x/tonconnect-manifest.json',};

export const connector = new TonConnect(dappMetadata);

把 manifest.json 设置成以下内容就可以将 origin 伪造成 ton.org:

{ "url": "https://ton.org","name":"FakeandevilDApp", "iconUrl": "https://ton-connect.github.io/demo-dapp/apple-touch-icon.png", "termsOfUseUrl": "https://ton-connect.github.io/demo-dapp/terms-of-use.txt", "privacyPolicyUrl": "https://ton-connect.github.io/demo-dapp/privacy-policy.txt"}

以下是部署上述代码后的 PoC,接下来我们扫描并解析二维码。

TON生态火爆,需警惕TonConnect SDK 的Origin伪造风险

TonConnect SDK 通过二维码的方式将 manifestUrl 的数据传递给钱包应用,不像其他 SDK 通过消息转发服务器转发。钱包应用会解析扫描获得的 manifestUrl 的数据。可以发现,我们轻易伪造成任意 DApp 的 origin 与钱包进行了通讯,也就是说,攻击者可以利用这个缺陷伪造知名的 DApp 实施钓鱼和欺诈攻击。

https://app.tonkeeper.com/ton-connect?v=2&id=24e3f2fdbea19fcd4fe03da3bc3d534d8b988edd01736f0b127a70cf2c531661&r={"manifestUrl":"https://tonconnect.pages.dev/tonconnect-manifest.json","items":[{"name":"ton_addr"}]}

TON生态火爆,需警惕TonConnect SDK 的Origin伪造风险

连接成功后,伪造的 DApp 通过 TonConnect 发起签名申请,一旦用户确认了,钱包就会将签名后的数据广播到区块链上。由于 origin 伪造极具欺骗性,用户很难鉴别连接和签名申请的来源。

TON生态火爆,需警惕TonConnect SDK 的Origin伪造风险

在 MetaMask SDK 中,通过修改 dappMetadata 即可伪造成知名的 DApp 实施钓鱼和欺诈攻击:

同理,在 WalletConnectModalSign 中,修改 metadata 即可:

import { WalletConnectModalSign } from "https://unpkg.com/@walletconnect/modal-sign-html@2.5.8";

const connectButton = document.getElementById("connect-button");

const web3Modal = new WalletConnectModalSign({ projectId: "32832b2f363c3e960ea28541f380b8d1", metadata: {name:"FakeandevilDApp",description:"FakeandevilDApp", url: "https://walletconnect.com/", icons: ["https://walletconnect.com/static/favicon.png"], },});

总结

由于目前主流钱包和 DApp 跨平台/应用通讯时的域名验证问题暂时没有较好的解决方案,因此 SDK 项目方通常会额外增加一些验证方式,如:WalletConnect 的 Verify 机制(https://docs.walletconnect.com/cloud/verify),在 DApp 通过验证域名后,钱包方可以通过 Verify API 来判断域名是否可信。

但是,很多主流的 DApp 没有对域名进行 Verify,所以这个解决方案也很难解决伪造 origin 钓鱼攻击。如果绝大多数 DApp 使用 Verify 的方式对域名进行认证,那么将很大程度上让用户避免遭受日益猖獗的伪造 origin 钓鱼攻击。慢雾安全团队在此也建议用户注意识别打开的网站是否和请求批准展示的域名一致,避免遭受此类攻击。

财华网所刊载内容之知识产权为财华网及相关权利人专属所有或持有。未经许可,禁止进行转载、摘编、复制及建立镜像等任何使用。

如有意愿转载,请发邮件至content@finet.com.hk,获得书面确认及授权后,方可转载。

更多精彩内容,请登陆
财华香港网(https://www.finet.hk/)
财华智库网(https://www.finet.com.cn)

现代电视(http://www.fintv.hk)

PANews

PANews是区块链和Web3.0领域领先的智库型信息平台,为行业用户提供具有国际视野的前沿资讯与报告。PANews优质多元的内容以图文、音频、视频等形式在全网多渠道覆盖,包含推特、微博、抖音、视频号等主流平台,旨在成为用户的Web3信息官。PANews同时还是腾讯新闻的内容合作伙伴,内容被福布斯、财新等媒体引用,获得腾讯新闻、今日头条、澎湃新闻等颁发的相关奖项。PANews的两位联合创始人均为福

相關文章

7月31日
Web3餐饮平台Blackbird Labs推出接受FLY支付的Blackbird Pay系统
7月31日
跨链协议Router宣布其Router Chain主网现已上线
7月31日
Vitalik最新演讲:以太坊的过去十年与下个十年
7月31日
LSD的叙事思路,浅谈Puffer Finance的Based Rollups
7月31日
为什么我对 TON 未来 6 个月的前景充满信心?
7月31日
Telegram创始人已通过捐精有超过100个生物学孩子,计划开源自己的DNA以便孩子们互认
7月31日
OpenAI开始向部分ChatGPT Plus用户推出高级语音模式
7月31日
多元业务扩展、全产业链布局,速览龙头矿企Marathon近期动态
7月31日
参议员Lummis的比特币战略储备草案将部分通过重新评估美联储黄金来提供资金
7月30日
俄罗斯央行行长:俄罗斯央行预计今年将首次测试加密支付

视频

快讯

17:35
【盈喜】迅捷环球控股(00540.HK)料中期扭亏为盈净利500万-800万港元
17:29
开明投资(00768.HK)7月底每股资产净值约为0.069港元
17:22
长江基建(01038.HK)中期股东应占溢利增1.7%至43.11亿港元 中期息0.72港元
17:19
锅圈(02517.HK):曾兴海辞任非执行董事
17:15
中证协:二季度评级机构共承揽债券产品2626只 同比下降8.25%
17:11
香港金管局:7月外汇基金境外资产增加243亿港元至34790亿港元
17:11
仙鹤股份:上半年净利润同比增长204.73%
17:06
MI能源(01555.HK):韩烨获任非执行董事
17:03
胡桃资本(00905.HK)7月底每股资产净值约为0.099港元
17:02
中国人保(01339.HK):人保财险首七月保费收入按年增4%