使用过MetaMask版本低于10.11.3的用户,如在导入助记词时点击了ShowSecretRecoveryPhrase,那么助记词可能泄露了。
2022年6月16日,MetaMask官方公布白帽子发现的一个被称为demonicvulnerability的安全问题,漏洞影响的版本<10.11.3,由于MM的用户体量较大,且基于MM进行开发的钱包也比较多,所以这个漏洞的影响面挺大的,因此MM也慷慨支付了白帽子5万刀的赏金。当团队向我同步了这个漏洞后,我开始着手对这个漏洞进行分析和复现。
漏洞分析
慢雾:Poly Network再次遭遇黑客攻击,黑客已获利价值超439万美元的主流资产:金色财经报道,据慢雾区情报,Poly Network再次遭遇黑客攻击。分析发现,主要黑客获利地址为0xe0af…a599。根据MistTrack团队追踪溯源分析,ETH链第一笔手续费为Tornado Cash: 1 ETH,BSC链手续费来源为Kucoin和ChangeNOW,Polygon链手续费来源为FixedFloat。黑客的使用平台痕迹有Kucoin、FixedFloat、ChangeNOW、Tornado Cash、Uniswap、PancakeSwap、OpenOcean、Wing等。
截止目前,部分被盗Token (sUSD、RFuel、COOK等)被黑客通过Uniswap和PancakeSwap兑换成价值122万美元的主流资产,剩余被盗资金被分散到多条链60多个地址中,暂未进一步转移,全部黑客地址已被录入慢雾AML恶意地址库。[2023/7/2 22:13:22]
白帽子将这个漏洞命名为demonicvulnerability,具体的漏洞描述比较复杂,为了让大家更好的理解这个问题,我尽可能用简单的表述来说明这个问题。在使用MM浏览器扩展钱包导入助记词时,如果点击"ShowSecretRecoveryPhrase"按钮,浏览器会将输入的完整助记词明文缓存在本地磁盘,这是利用了浏览器本身的机制,即浏览器会将Tabs的页面中的Text文本从内存保存到本地,以便在使用浏览器的时候可以及时保存页面的状态,用于下次打开页面的时候恢复到之前的页面状态。
慢雾:Gate官方Twitter账户被盗用,谨慎互动:10月22日消息,安全团队慢雾发文称:加密平台Gate官方Twitter账户被盗用,谨慎互动。半小时前,攻击者利用该账户发文,诱导用户进入虚假网站连接钱包。此外,慢雾科技创始人余弦在社交媒体上发文表示:注意下,Gate官方推特应该是被黑了,发送了钓鱼信息,这个网址 g?te[.]com 是假的(之前谈过的 Punycode 字符有关的钓鱼域名),如果你去Claim会出现eth_sign这种签名钓鱼,可能导致ETH等相关资产被盗。[2022/10/22 16:35:14]
基于对这个漏洞的理解,我开始进行漏洞复现,由于MM仅对这个漏洞进行简要的描述并不公开漏洞细节,所以在复现的时候遇到了如下的问题:
慢雾:PREMINT攻击者共窃取约300枚NFT,总计获利约280枚ETH:7月18日消息,慢雾监测数据显示,攻击PREMINT的两个黑客地址一共窃取了大约300枚NFT,卖出后总计获利约280枚ETH。此前报道,黑客在PREMINT网站植入恶意JS文件实施钓鱼攻击,从而盗取用户的NFT等资产。[2022/7/18 2:19:58]
缓存被记录到磁盘中的文件路径未知
缓存何时被记录到磁盘未知
为了解决问题1,我开始对浏览器的缓存目录结构进行分析和测试,发现在使用浏览器(chrome)的时候相关的Tabs缓存是记录到了如下的目录:
动态 | 慢雾: 警惕利用EOS及EOS上Token的提币功能恶意挖矿:近期由于EIDOS空投导致EOS主网CPU资源十分紧张,有攻击者开始利用交易所/DApp提币功能恶意挖矿,请交易所/DApp在处理EOS及EOS上Token的提币时,注意检查用户提币地址是否是合约账号,建议暂时先禁止提币到合约账号,避免被攻击导致平台提币钱包的CPU资源被恶意消耗。同时,需要注意部分交易所的EOS充值钱包地址也是合约账号,需要设置白名单避免影响正常用户的提币操作。[2019/11/6]
Tabs缓存路径:
/Users/$(whoami)/Library/ApplicationSupport/Google/Chrome/Default/Sessions/
然后继续解决问题2:Sessions目录会记录Tabs的缓存,为了找出缓存被记录的时间节点,我对导入助记词的整个流程进行了分解,然后在每一步操作之后去观察Sessions的数据变化。发现在如下这个页面输入助记词数据后,需要等待10-20s,然后关闭浏览器,明文的助记词信息就会被记录到Sessions缓存数据中。
分析结论
用户正常在使用MM的时候是将助记词相关的数据放入内存中进行存储,一般认为是相对较为安全的,但是由于demonicvulnerability这个漏洞导致助记词会被缓存到本地磁盘,因此就会有如下的新的利用场景:
明文的助记词数据缓存在本地磁盘,可以被其他应用读取,在PC电脑中很难保证其他应用程序不去读取Sessions缓存文件。
明文的助记词数据缓存在本地磁盘,如果磁盘未被加密,可以通过物理接触恢复助记词。比如在类似维修电脑等场景下,当他人对电脑进行物理接触时可以从硬盘中读取助记词数据。
作为普通用户,如果你使用过MetaMaskVersion<10.11.3,且在导入助记词的时候点击了ShowSecretRecoveryPhrase,那么你的助记词有可能泄露了,可以参考MetaMask的文章对磁盘进行加密并更换钱包迁移数字资产。
作为扩展钱包项目方,如果采用了在Tabs页面中以Text的方式输入助记词导入钱包,均受到demonicvulnerability漏洞的影响,可以参考MetaMaskVersion>=10.11.3的实现,为每个助记词定义单独的输入框,并且输入框的类型为Password。
原文标题:《MetaMask浏览器扩展钱包demonic漏洞分析》
撰文:Thinking@慢雾安全团队
来源:ForesightNews
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。