# 从Tp钱包被盗谈一下普通用户的web3资产安全准则

By [littleflyingpiggy](https://paragraph.com/@littleflyingpiggy-2) · 2022-10-05

---

如果觉得我的内容对你有帮助，欢迎关注我的[推特账号](https://twitter.com/flying_piggy1)和小红书[账号](https://www.xiaohongshu.com/user/profile/5dcdf00f000000000100410b?xhsshare=CopyLink&appuid=5dcdf00f000000000100410b&apptime=1672565199)：飞猪聊web3，获取更多web3的安全知识、基本技能和实用资讯

如果需要更具体、系统、有针对性的教程指导，如果需要更具体、系统、有针对性的教程指导，欢迎大家私聊咨询哦

![](https://storage.googleapis.com/papyrus_images/0bdc98b42f6e3d4c0558691d4d2a50f1c6c4f7a506892a035fd83e393f8649fb.png)

昨天（2022.10.2）tp钱包旗下dex应用Transit Swap被盗的反转事件应该算的上近期web3世界里的重大安全事故了，在为追回资金的用户感到开心的同时，我们也应该一起反思一下，作为用户，该从中吸取何种教训？

**缘何被盗？**

所有的被盗都逃不脱两个原因：应用代码有漏洞，用户操作有瑕疵，亦或者二者兼有，而此次Transit Swap被盗正是二者问题的集合。简单来说，用户通过dex进行swap操作，需要先把调用token的权限授权给dex的管理合约，管理合约获得授权之后可以按照用户的要求进行兑换；在正常情况下，管理合约只能由用户主动发起后调用，但此次事件中，由于代码漏洞，导致管理合约可以被任意外部调用，所有授权给管理合约的用户资金都有风险，而用户给管理合约无限制的授权，又扩大了用户的损失。

来自慢雾安全团队@SlowMist\_Team的[原理分析](https://www.chaincatcher.com/article/2080516)：

举个栗子：假设钱包里有500个A币，打算用其中100个兑换成B币，需要先把调用100个A币的权限授予要使用的兑换合约，如果兑换合约出问题，损失的就是这100个A币；但是如果用户怕麻烦，直接给兑换合约无限调用A币的权限，那么合约一旦出问题，钱包里所有的A币都会遭殃。

如果应用没bug，自然不会有问题；如果用户很谨慎，权限用多少给多少，那么哪怕应用出问题，损失也有限。正因为被盗存在应用和用户双方的问题，所以我们需要从这两方面有针对性的吸取教训。

**首先是应用层面**

这次的问题为什么没有被发现？因为应用不开源，看不到代码，自然无法发现其中的漏洞。之前我已经说过了开源是web3的灵魂，让后人可以在前人肩膀上搭积木。代码不开源，有违区块链公开透明的精神，项目方在其中暗藏私货也无法被察觉。出品了热门的中文solidity教程的@0xAA\_Science大佬提到过：合约不开源，等同于对黑客开源，对用户闭源，所以他建议用户尽量不要跟不开源项目交互，他在github上整理了一个[未开源项目清单](https://twitter.com/0xAA_Science/status/1576561609207558144)，供大家参考

另外@billtheinvestor 大佬整理了一个[常用钱包代码开源及开发情况总结的线程](https://twitter.com/billtheinvestor/status/1556577434467958785)，大家可以比较一下作为选择钱包服务商的参考

**其次就是用户层面**

（1）最大的教训当然是要提高个人资产安全意识。

网络上各种被盗事件下经常有人评论，为啥不用硬件钱包？说的好像硬件钱包是保险柜，资金放进去就万无一失了一样。其实我很想吐槽的是，安全意识不到位用啥工具也白瞎：啥来源的网页也敢打开，啥渠道的软件也敢下载，啥英文也不认识，看着set approval for all也敢确认，真正验证了那句话：无知者无畏。

所以对于大多数web3新人来说，比起买硬件钱包，先学习一些资产安全的内容来武装一下头脑，无疑是更有性价比的选择。顺便臭不要脸的自荐一下，我的 #人话讲透web3 系列中会有专门的资产安全的板块，会从安全意识、安全操作技巧、钱包管理和使用安全等方面进行详细的介绍，欢迎关注我@flying\_piggy1哦~

（2）要意识到授权存在极大风险。

授权是什么？授权就意味着你许可别人调用你的某些资产，正经的项目方当然不会随便未经你同意而调用，但也要防备此次出现bug的情况；授权给诈骗网站，不用说，基本就等于跟资产永别了。所以不论是NFT还是token，大家在看到set approval for all的提示时，一定要反复确认，对于NFT要看授权对象是否与当下操作一致，如果你在mint时弹出了一个set approval for all，肯定有问题；对于token，不要给与应用无限度的授权，用多少给多少。

经常用授权检查工具检查地址，有不使用或者可疑的授权立马取消掉，如果发现误授权，立马转移资产更换新钱包

这是@BTW0205大佬整理的慢雾推荐的[取消授权的工具](https://twitter.com/BTW0205/status/1576496961636777984)，大家可以收藏备用

（3）学会使用一定的安全工具很有必要。

这里给大家提供两个工具，合理使用基本可以应付大多数场景了。

1.  [VirusTotal](https://www.virustotal.com/gui/home/upload)，这是一个免费的全球最大的在线病毒分析平台之一，无需下载，即开即用，不仅可以检测程序文件，还可以对网站链接、IP地址、文件hash值来进行检测。大家在打开陌生网站、安装任何应用前，都该养成用virustotal检测的习惯
    
2.  [wallet guard](https://walletguard.app/)，这是一款免费的浏览器安全插件，目前适用chrome和brave浏览器，该插件会在你进行高危操作（比如误入钓鱼网站、安装恶意插件）时弹出提示，给资产增加一道安全防线。
    

不过，要提醒大家的是，任何安全工具都并非绝对安全，因为每多安装一个应用，就意味着多了一个可能出问题的点。所以大家不要认为使用了工具就可以高枕无忧，任何时候，自己才是保护资产的第一责任人。

如果觉得我的内容对你有帮助，欢迎关注我的[推特账号](https://twitter.com/flying_piggy1)和小红书[账号](https://www.xiaohongshu.com/user/profile/5dcdf00f000000000100410b?xhsshare=CopyLink&appuid=5dcdf00f000000000100410b&apptime=1672565199)：飞猪聊web3，获取更多web3的安全知识、基本技能和实用资讯

---

*Originally published on [littleflyingpiggy](https://paragraph.com/@littleflyingpiggy-2/tp-web3)*
