区块链钱包漏洞可窃取加密货币
CheckPoint研究人员在Everscale区块链钱包中发现安全漏洞,可以窃取用户加密货币。
EverSurf
EverSurf是一个跨平台的消息应用,一个区块链浏览器,也是Everscale区块链的加密货币钱包。使用React Native开发框架编写,同时上传到了Google Play Market和Apple Store应用市场。同时,还有一个可运行在任意平台的EverSurf web版本。
图1 EverSurf web版
漏洞分析
Surf钱包中用于对交易进行签名的密钥只保存在用户设备上。所有对区块链的操作都是在客户端来实现的。因此,与其他非托管钱包类似,无需注册过程。
用户首次运行应用时,会被建议创建一个新的钱包。Surf会生成一个seed词组和公私钥对。此外,用户会被要求创建一个6位数字的PIN码。
然后该PIN码被用于登录应用和确认交易。Surf有应对暴力破解PIN码的保护机制:
图2 EverSurf预防暴力破解PIN码
即使没有这类保护机制,创建的密钥和seed词组都保存在浏览器的本地存储中。本地存储是使用localstorage特征从JS访问的key-value存储。
Surf以下面的格式将密钥和seed词组保存在本地存储的“surf.ton.wallet”key中:
图3 保存在浏览器localStorage中的加密的钱包数据
本地存储在web浏览器中并不是受保护的。比如,在Firefox中本地存储以非加密的SQLite数据库的形式存储:
Mozilla\Firefox\Profiles\{profile_name}\webappstore.sqlite
Chrome将localstorage以非加密的levelDB数据库的形式存储:
Google\Chrome\UserData\Default\LocalStorage\leveldb\
也就是可以通过物理或恶意软件访问用户计算机的用户就可以获得这些数据。
此外,本地存储还可以被浏览器扩展访问,然后浏览器扩展可以泄露保存的数据。研究人员创建了一个简单的Chrome web扩展实现了该功能:
alert(localStorage.getItem("surf.ton.wallet"));
安装该扩展后,打开Surf网站后,就可以看到包含加密的keystone的消息:
图4 使用浏览器扩展从localStorage中提取加密的钱包数据
因为控制用户钱包的数据是保存在用户计算机上的,因此对用户资金的唯一保护就是强加密。
Keystore加密
Surf应用会在用户输入正确PIN码后加密seed词语并向用户显示:
图5 Surf要求用户输入PIN码
研究人员分析发现askForPassword函数会被调用,并接收加密的keystore。
图6 负责取回seed词语的函数
askForPassword函数会调用validatePassword函数来执行PIN码验证。
图7 askForPassword函数读取和验证PIN码
最重要的动作是PIN码验证。通过调用deriveKeyFromPasswordAndSalt函数,Surf会生成派生密钥,用于解密keystore。然后在isDerivedKeyCorrect函数中使用nacl_secret_box_open执行解密过程。
在deriveKeyFromPasswordAndSalt函数中,Surf会使用使用Scrypt密钥派生函数从PIN码中派生出解密密钥:
图8–Surf派生keystore解密密钥
攻击场景
CheckPoint研究人员
{"encSeed":{"encStr":"6rjkbh88WXkrJWl4os3cjRzvZkQGlnV39U3YvLYUrM7yzf6h79XxXX/VziNde2bkPeSnJZ11Yi4T8CFgPJMyI1W+EN0Yzw+FDdtTq5gaKHjk5nF60CSHZ4qKXObIQ7zBbped","nonce":"2Tdr9FFP0RcpjecwcS8XtcC5M2/FRY+I"}}
攻击过程只花费了38分钟。最后成功获得了派生密钥,并解密了seed词组,可以用于恢复另一个设备上的密钥。
图9 PIN码暴力破解结果
漏洞修复
CheckPoint研究人员将该漏洞提交给了EverSurf开发者,开发团队通过发布桌面版的方式修复了该漏洞。目前,该web版本只用于开发用途。账户的seed词组不在EverSurf web版中使用。
参考及来源:https://research.checkpoint.com/2022/check-point-research-detects-vulnerability-in-the-everscale-blockchain-wallet-preventing-cryptocurrency-theft/
责任编辑:
区块链技术开发联盟链开发联盟链只处理特殊群体的成员,缺乏第三方。车牌的几个连接点被指定为记者区块链钱包开发的图片,每个连接点由车牌的所有连接点决定。根据联盟链互联网的分散程度开发区块链钱包的图片_ios开发区块链钱包_开...
建立钱包后会转化成一个以 0x 开始的 42 位字符串数组,这一字符串数组便是钱包详细地址,一个钱包相匹配一个钱包详细地址,地址唯一且不可以改动,换句话说一个钱包中全部代币总的汇款收付款详细地址是一样的。例如,一个钱包中...
首次使用该技术制作的加密货币非常有名,被认为是迄今为止开发的最佳虚拟资产程序。比特币在一些国家被禁止使用,但主要用作虚拟资产。加密货币在推出时并没有取得太大的成功。但是,随着技术的进步,它在商业世界中的地位逐...
今天要和大家分享的是区块链钱包的骗局。目前市场上有各种区块链项目,哪个行业流行就会产生哪种链,哪种货币!这些区块链项目是金融投资项目,不同于我国重点发展方向所倡导的区块链技术。属于以区块链技术为诱饵,进行包装、投机、炒作...