引言:OKX Web3特别策划了《安全特刊》栏目,针对不同类型的链上安全问题进行专期解答。通过最发生在用户身边最真实案例,与安全领域专家人士或者机构共同联合,由不同视角进行双重分享与解答,从而由浅入深梳理并归纳安全交易规则,旨在加强用户安全教育的同时,帮助用户从自身开始学会保护私钥以及钱包资产安全。
某一天,突然有人送你 1 个价值 100 万美元的钱包地址私钥,你会想要把钱立刻转走吗?
如果想,那么这篇文章就是为你量身定制的。
本文是 OKX Web3《安全特刊》第 01 期,特邀加密行业身经“百诈”的知名安全机构——慢雾安全团队与 OKX Web3安全团队,从用户遭遇的最真实的案例出发,进行分享,干货满满!
慢雾安全团队:非常感谢 OKX Web3的邀请。慢雾(SlowMist)作为一家行业领先的区块链安全公司,主要通过安全审计及反洗钱追踪溯源等服务广大客户,并构建了扎实的威胁情报合作网络。2023 年度 SlowMist 协助客户、合作伙伴及公开被黑事件冻结资金共计超过 1250 万美元。希望秉着对行业对安全的敬畏心,继续输出有价值的东西。
OKX Web3安全团队:大家好,非常开心可以进行本次分享。OKX Web3安全团队主要负责 OKX Web3钱包的安全能力建设,提供产品安全、用户安全、交易安全等多重防护服务, 7 X 24 小时守护用户钱包安全的同时,为维护整个区块链安全生态贡献力量。
Q1:能否分享一些真实的被盗案例?
慢雾安全团队:第一,大部分案例是因为用户把私钥或者助记词存到了网上。比如,用户经常使用到的 Google 文档、腾讯文档、百度云盘、微信收藏、备忘录等云存储服务进行私钥或者助记词存储,一旦这些平台账号被黑客收集并“撞库”成功,私钥很容易被盗。
第二,用户下载虚假 APP 后,引发了私钥泄露。比如,多重签名骗局是最为典型的案例之一,欺诈者诱导用户下载假冒钱包并盗取钱包助记词,随后立即修改该用户钱包的账户权限:将钱包账户权限由用户本人,变成用户本人和欺诈者共同持有,从而抢占该钱包账户的控制权。这类欺诈者往往会保持耐心,等待用户账户积累了一定加密资产后,一次性转走。
OKX Web3安全团队:慢雾已经概述了私钥被盗的 2 类主要情况,而第 2 种,欺诈者利用虚假 APP 盗取用户私钥的本质是木马程序,这类木马程序通过获取访问用户输入法、照片等权限,从而盗取用户私钥。相对于 IOS 用户而言,安卓用户遭遇到的木马病毒攻击更多。这里简单分享两个案例:
案例一,用户反馈钱包资产被盗,经过我们团队与用户沟通排查发现:是由于他此前通过谷歌搜索,下载并安装了被伪装的某数据平台软件,此软件是木马程序。但由于用户在搜索该平台软件时,其链接出现在谷歌搜索的 TOP 5 ,导致用户误以为是官方软件。事实上,很多用户对谷歌提供的链接并不进行辨别,所以很容易通过这种方式遭遇到木马攻击,我们建议用户通过防火墙、杀毒软件、以及 Hosts 配置等多方面进行日常安全防护。
案例二,用户反馈在投资某个 DeFi 项目时,发生了钱包资产被盗的情况。但通过我们的分析排查发现:该 DeFi 项目本身并不存在问题,用户 B 钱包资产被盗是由于其在 Twitter 上对该项目评论时,被冒充该 DeFi 项目的官方客服盯上,经该假冒客服的引导,点击并进入该虚假链接输入了助记词,从而导致钱包资产被盗。
由此可见,诈骗者的手段并不高明,但是需要用户提高辨别意识,任何情况都不能轻易泄漏自己的私钥。此外,我们钱包已针对该恶意域名进行了安全风险提示。
Q2:是否存在最佳的私钥保管方法?目前有哪些替代方案可以减少对私钥的依赖?
慢雾安全团队:私钥或者助记词其实是一个单点故障问题,一旦被盗或者丢失就很难挽回。目前,比如安全多方计算 MPC、社交认证技术、Seedless/Keyless、预执行和零知识证明技术等等新的技术,正在帮助用户减少对私钥的依赖。
以 MPC 为例,第一,MPC 技术是指,所有参与方为了完成一项任务而执行复杂的联合计算,而他们的数据保持私有和安全,不与其他参与方共享。第二, MPC 钱包通俗来讲是,利用 MPC 技术,将一个私钥安全打碎成多片,由多方共同管理;或者干脆就是多方共同生成一个虚拟的密钥,可能后者的情形更为普遍,因为这时候没有人曾经见过完整的私钥。总之,MPC 的核心思路为分散控制权以达到分散风险或提高备灾的目的,有效避免了单点故障等安全问题。
注意,MPC 涉及到一个词叫 Keyless ,可以理解为“无助记词的”,或者也可以说成“无私钥的”。但这个“无”并不是实际意义上的没有密钥,而是指不需要用户备份助记词或者私钥、且感知不到它们的存在。所以关于 Keyless 钱包,需要了解这 3 点:
1.创建 Keyless 钱包过程中,私钥不会在任何时间、任何地点被创建或存储。
2.在签署事务时,不涉及私钥,而且私钥在任何时候都不会被重构。
3.Keyless 钱包不会在任何时候生成或保存完整的私钥和种子短语。
OKX Web3安全团队:当前并不存在完美的私钥保管方式。但是我们安全团队推荐使用硬件钱包、手抄保存私钥、设置多重签名、分散存储助记词等方式来进行私钥管理。比如,分散存储助记词是指,用户可以将助记词分成 2 组或者多组进行存储,降低助记词被盗的风险。再比如,设置多重签名是指,用户可以选定信任的人,共同签名来决定交易的安全性。
当然,为保障用户钱包私钥安全,OKX Web3钱包整套底层是不触网的,用户助记词和私钥相关信息,全部加密保存在用户的设备本地,而且相关 SDK 也是开源的,经过了技术社区广泛的验证,更加的公开透明。此外,OKX Web3钱包也通过与慢雾等知名的安全机构进行合作,进行了严格的安全审计。
除此之外,为了更好地保护我们的用户,针对私钥管理的部分,OKX Web3安全团队正在提供并规划更强大的安全能力,正在持续迭代升级中,在这里简单分享一下:
1.双因子加密。当前,大部分钱包通常会采用密码加密助记词的方式,将加密后的内容保存在本地,但如果用户中了木马病毒,该木马则会扫描加密后的内容,并对用户输入的密码进行监听,如果一旦被诈骗者监听到,则可以解密加密的内容,从而获取到用户的助记词。未来,OKX Web3钱包将会采用双因子的方式对助记词进行加密,即使诈骗者通过木马拿到用户的密码,也无法解开加密的内容。
2.私钥复制安全。大部分木马会通过用户在复制私钥的时候盗取用户剪贴板中的信息,从而导致用户私钥泄漏。我们计划通过增加用户私钥复制过程的安全性,比如复制部分私钥、及时清除剪贴板信息等方式或者功能,来帮助用户降低私钥信息被盗风险等等。
Q3:由私钥被盗切入,当前常见钓鱼方式有什么?
慢雾安全团队:据我们的观察,钓鱼活动每个月都在逐步增长。
第一,当前钱包盗贼(Wallet Drainers)构成了当前钓鱼活动的主要威胁,持续以各种形式攻击普通用户。
钱包盗贼(Wallet Drainers)是一种与加密货币相关的恶意软件,这些软件部署在钓鱼网站上,诱骗用户签署恶意交易,从而窃取用户钱包资产。比如,目前比较活跃的钱包盗贼(Wallet Drainers)有:
1.通过社会工程学,获取 Discord Token 并进行钓鱼的 Pink Drainer。社会工程学通俗理解就是,以交流的方式套取用户的私密信息。
2.还有 Angel Drainer,会对域名服务提供商进行社会工程学攻击。在获取了域名帐户相关权限后,Angel Drainer 会修改 DNS 解析指向,并将用户重定向到虚假网站等等。
第二,目前最常见的还是盲签钓鱼,盲签的意思就是说用户在和一个项目进行交互的时候不知道要签要授权的东西是什么内容,就稀里糊涂的点了确认,然后就导致了资金被盗。关于盲签钓鱼,我们举几个例子:
案例 1 :比如 eth_sign。eth_sign 是一种开放式签名方法,它允许对任意 Hash 进行签名,也就是说它可以被用来对交易或任何数据进行签名,而一般没有技术基础的用户想要看懂签名的内容是比较困难的,这里就会存在一定的钓鱼风险。好在现在越来越多的钱包已经开始对这种签名进行安全提醒,一定程度上可以避免一些资损风险。
案例 2 :permit 签名钓鱼。我们都知道在 ERC 20 币种的交易中,用户可以调用 approve 函数进行授权,但是 permit 函数允许用户在链下生成签名再授权给指定用户使用一定数量额度的 token,攻击者利用 permit 方法进行钓鱼,当受害者访问钓鱼网站的时候,攻击者通过网站让用户签署 permit 授权,用户签署后攻击者可以拿到签名后的数据,攻击者调用 token 合约的 permit 函数并传入签名数据然后广播到链上来获得 token 的授权额度,进而盗取用户的 token。
案例 3 :隐蔽的 create 2 手法。create 2 允许开发者在将合约部署到以太坊网络之前预测合约的地址。基于 create 2 ,攻击者就可以为每个恶意签名生成临时的新地址。欺骗用户授予权限签名后,攻击者就可以在这个地址创建合约然后转移用户的资产。因为是空白地址,所以这些地址可以绕过一些钓鱼插件和安全公司的监控警报,所以隐蔽性很强,用户很容易中招。
总之,对于钓鱼网站,用户可以在交互之前对项目的官网进行鉴别,并且留意交互过程中是否有恶意签名请求,并应该警惕提交助记词或私钥的行为,切记不在任何地方泄漏助记词或私钥。
OKX Web3安全团队:我们对常见的钓鱼方式进行了研究,并在产品侧提供了多维度的安全防护。就目前用户遇到的最主要的几类钓鱼方式简单分享:
第一类,虚假空投类。黑客一般会针对受害者地址生成首尾相似的地址,并对用户进行小额转账、 0 U 转账,或者假代币转账的空投,该类交易会展示在用户的交易历史中,如果用户不小心复制粘贴错地址,则会造成资产损失。针对该类攻击,OKX Web3钱包能够识别其历史交易并打成风险标,同时在用户向其地址转账的时候,会进行安全风险提示。
第二类,诱导签名类。通常黑客会在知名项目的 Twitter、Discord、TG 等公众地方进行评论、并发布虚假 DeFi 项目网址或者领取空投的网址,诱导用户进行点击,从而盗取用户资产。除了慢雾提到的 eth_sign、permit、create 2 等签名类钓鱼,还有一些就是:
方式 1 :直接转账盗取主链代币。黑客往往会给恶意合约函数起名为 Claim,SeurityUpdate 等具有诱导性名字,而实际函数逻辑为空,从而只转移用户主链代币。当前 OKX Web3钱包已经上线预执行的功能,能够显示交易上链后的资产变动及授权变动,对用户进行安全风险提示。
方式 2 :链上授权。黑客通常会诱导用户签署 approve / increaseAllowance / decreaseAllowance /setApprovalForAll 交易,该交易会允许黑客指定地址转移用户的代币资产,并在用户签署后实时监控用户的账号,一旦有对应的资产转入立马转走。针对钓鱼者的安全防护过程是一种对抗,也是一个持续升级的过程。
尽管大部分的钱包会对黑客的授权地址进行安全风险检测,但是攻击者的攻击方式也在升级,比如利用 create 2 的特性,攻击者会预先计算好新地址,因新地址并不在安全黑地址库中,所以可以轻意的绕过安全检测。攻击者会等到有鱼上钩后,再去该地址部署合约,并将用户的资金转走。比如,近期我们也发现不少攻击者,会使用户授权给 uniswap.multicall 合约,因该合约是一个正规项目的合约,也可以绕过安全产品的检测。
方式 3 :权限变更:包括 tron 权限变更,和 solana 权限变更等。一是,在 tron 权限变更中,多签是 tron 链的一个特性,在很多钓鱼网站中,钓鱼者会将更改账号权限的交易,伪装成转账的交易,如果用户不小心签署了这笔交易,则用户的账号会变成一个多签账号,用户对其账号失去了控制权限。二是,在 solana 权限变更中,钓鱼者会通过 SetAuthority 来修改用户代币的 ATA 账号的 Owner, 一旦用户签署了这笔交易,该 ata 账号的 owner 就会变成钓鱼者,从而使得钓鱼者拿到了用户的资产。
其他方式:另外,由于协议本身的设计机制等问题,也很容易被钓鱼者利用。基于以太坊的中间件协议 EigenLayer 的 queueWithdrawal 调用,允许指定其他地址作为 withdrawer,用户被钓鱼签署了该交易。七天后,指定地址通过 completeQueuedWithdrawal 获得用户的质押资产。
第三类,上传助记词。攻击者通常会提供伪装的空投项目、或假打新的工具,诱导用户上传私钥或助记词,具体案例见如上。此外,有时也会伪装成插件钱包弹窗,来诱导用户上传助记词。
Q4:热钱包和冷钱包攻击方式的差异化
OKX Web3安全团队:热钱包跟冷钱包的区别在于私钥的存储方式不同,冷钱包的私钥一般是离线存储,而热钱包通常存储在有网络的环境里。所以,针对冷钱包跟热钱包的安全风险会有所不同。热钱包安全风险上面已经非常全面,不再展开。
冷钱包的安全风险主要包括:
第一,社会工程及物理攻击风险、和交易过程风险。关于社会工程及物理攻击风险是指,由于冷钱包通常离线存储,则可能存在被攻击者以社会工程手段,伪装成亲人或朋友用以访问冷钱包的权限。
第二,作为一个物理设备,可能被损坏或丢失。关于交易过程风险是指, 在交易过程中,冷钱包同样也会遇到前面提到的各类空投,诱导签名等场景的攻击方式。
Q5:就像开篇所述“赠送高价值的钱包私钥”,还有哪些另类的钓鱼陷阱?
慢雾安全团队:是的,「故意赠送高价值的钱包私钥」是非常经典的案例,在多年前就已经出现,但直到现在也还是会有人上当受骗。这种骗局其实就是骗子故意泄露私钥助记词,你将私钥助记词导入钱包后,攻击者时刻监控你的钱包,一旦你转入 ETH,就立刻给你转走。此类手法就是利用了用户贪小便宜的心理,导入的人越多,手续费越高,损失就越多。
其次,有部分用户会认为“我没有什么值得攻击的”,这种防御低下的心态会让用户变得容易受攻击。任何人的信息(如电子邮件,密码,银行信息等)对攻击者来说都是有价值的。甚至还有用户认为只要不点击垃圾邮件中的链接,就不会受到威胁,但有些钓鱼邮件可能会通过图片或者附件来植入恶意软件。
最后,对于“安全”我们需要有个客观的认识,那就是没有绝对的安全。何况网络钓鱼攻击的方式演变很多,发展也很快速,大家都应该不断学习,提高自我安全意识才是最可靠的。
OKX Web3安全团队:防范第三方钓鱼陷阱确实是一个复杂的问题,因为钓鱼者往往利用了人们的心理弱点和常见的安全疏忽。很多人平时都很谨慎,但往往遇到忽如其来的“大馅饼”时,往往放松了警惕,放大了自己的贪婪特性,从而导致上当受骗。在这个过程中,人性的弱点会大于技术,就算有更多的安全手段,用户也会短期忽略,事后回想起来,才会发现自己早已上当受骗。我们要清楚,“天下没有免费的午餐”,时刻注意提高警惕,注意安全风险,尤其是在区块链这个黑暗森林里面。
Q6:对用户提高私钥安全的建议
慢雾安全团队:回答这个问题之前,我们先梳理下一般攻击是怎样去盗取用户的资产的。攻击者一般是通过如下两种方式来盗取用户的资产的:
方式一:骗取用户对盗取资产的恶意交易数据进行签名,如:欺骗用户将资产授权或转移给攻击者
方式二:骗取用户在恶意网站或者 App 上输入钱包的助记词,如:欺骗并诱骗用户在虚假的钱包页面中输入钱包的助记词
知道了攻击者是如何盗取钱包资产后,我们就要对可能的风险进行防范:
防范一:尽可能做到所见即所签。都说钱包是进入 Web3 世界的钥匙,用户交互最重要的就是拒绝盲签,在签名之前要识别签名的数据,知道自己签的交易是做什么的,否则就放弃签名。
防范二:鸡蛋不要放在同一个篮子里。通过对不同资产以及使用频率的情况可以对钱包进行分层级管理,让资产的风险处于可控。参与空投等活动的钱包由于使用频率较高,建议存放小额资产。大额资产一般不会频繁动用,建议放在冷钱包中且使用的时候要确保网络环境,物理环境是安全的。有能力的话尽可能地使用硬件钱包,由于硬件钱包一般不能直接导出助记词或私钥,所以可以提高助记词私钥被盗门槛。
防范三:各种钓鱼手法和事件层出不穷,用户要学会自行识别各种钓鱼手法,提高安全意识,进行自我教育避免被骗,掌握自救能力。
防范四:不急不贪、多方验证。此外,用户如果想要了解更全面的资产管理方案,可以参考慢雾出品的《加密资产安全解决方案》,了解更多的安全意识及自我教育,则可以参考《区块链黑暗森林自救手册》。
OKX Web3安全团队:私钥作为访问和控制钱包加密资产的唯一凭证,保护钱包私钥安全至关重要。
防范一:了解你的 DApp。在进行链上 DeFi 投资的时候,一定要对使用的 DApp 进行全方面的了解,以防止访问了虚假 DApp 造成资产损失。尽管我们 OKX Web3钱包针对 DApp 进行了多种策略的风险检测和提示,但攻击者会持续更新攻击手法,并绕过安全风险检测。用户在投资的时候,一定要擦亮眼睛。
防范二:了解你的签名。用户在进行链上交易签名的时候,一定要对交易进行确认,确保了解交易的细节,对于看不懂的交易一定要谨慎,不要盲目签名。OKX Web3钱包会对链上交易以及离线签名进行解析,并模拟执行,展示资产变动及授权变动的结果。用户可以在交易前,重点关注该结果看是否符合预期。
防范三:了解你下载的软件。下载辅助交易及投资软件时,要确保是从官方平台上下载的,下载后要及时使用杀毒软件扫描。如果下载恶意软件,木马会通过截图监控剪贴板、内存扫描、上传缓存文件等手段,来获取用户的助记词或私钥。
防范四:提升安全意识,妥善保管私钥。尽可能不要复制助记词,私钥等重要信息,不要截图,不要将该类信息保存到第三方的云平台中。
防范五:强密码多签,在使用密码的过程中,用户应该尽可能增加密码的复杂度,防止黑客在拿到私钥加密文件后,对其进行爆破。在交易过程中,如果有多签机制,一定要采用多签,这样,如果一方的助记词或私钥泄漏,也不会影响整体的交易。