全面解析 Discord 安全问题
最近看到 Discord 的安全问题频发,近期本人也从 Discord 的普通用户,转变到 Discord 社区的运营者,同时也成为了 Discord 生态上的开发者,所以本文就以 Discord 的安全作为主题给大家分享一下 Discord 上有关安全的问题。
实际上 Discord 的安全问题被诟病已久,但这也不能完全责怪 Discord,因为 Discord 实在是太开放了,就像最初的 Android 一样,任何一个 APP 都可以拿到几乎系统的所有权限,所以任何一个 APP 有安全风险,那么整个系统都会有安全风险。上面说到 Discord 的三个角色(普通用户、运营者、开发者),任何一方未对安全引起重视也都会导致安全问题。
安全无小事,希望这篇文章能够帮助到以上三个角色的读者们。
对于普通用户
Discord 上的用户遭受损失主要是因为 Discord 上的钓鱼网站信息太多了,所以对于普通用户来说,为了避免被钓鱼,需要注意以下几点:
关闭私信
关闭私聊
该选项如果打开的话,Discord 的成员可以直接向你发起私聊,而这些成员的头像以及账号也许会与你在 Discord 里看到的管理员一模一样,这时你也许就会放松警惕而轻信这个账号,所以当他们发送某个链接给你的时候也许你就被钓鱼成功了。
另外好友请求也需要注意,最近我在 OpenSea 的 Discord 里问了个问题,结果也是头像和账号和 Discord 管理员一模一样的账号来请求加好友,这种情况直接忽略就好。
不要点击任何未知链接
这个截图是 OpenSea 官方的 Discord 中的消息,大意是说 OpenSea 要和 YouTube 合作发行 NFT,只有 100 个免费名额。小白用户看到这个消息可能立马 FOMO 了,点击截图中的链接后,看到的网站大概长这样。
看到域名和网站都没问题,想到只有 100 个名额,也许就赶紧点 Claim 抢 Mint 了,但执行了该交易之后你的 NFT 也就丢了。
所以看到这种消息千万需要提高警惕,一般来说各个项目方发行 NFT 的话都会提前发布消息,这种突然告诉你要发布 NFT 的消息一般都是假的。
如何判断钓鱼网站
有时候在 Discord 里看到无论是谁发来的链接(可能是群友、管理员、机器人发的链接),在点击之前首先需要看访问的域名是不是项目官方的域名,如果不是的话点击进入后就需要十分警惕:
如果该网站唤起 MetaMask 的弹窗只是要求查看你的钱包地址,是安全的,例如下图:
该操作只是授权该网站查看你的钱包地址,不会对你的资产有其他操作。
当你继续在该网站上浏览,需要进行钱包相关操作的时候就需要特别留意了,一般网站唤起你的 MetaMask 总共有如下几个操作类型:
转账
如果网站唤醒的是截图上的转账请求,你需要注意转账的目标地址是不是你希望转出的地址,以及转账的金额是否正确。
对于转账来说比较简单,只要确定收款地址和金额就好了。
签名
一般来说获取签名的目的是为了证明你拥有该钱包地址,例如 Discord 里有个叫 Collabland 的机器人,它就是通过签名来验证你拥有该钱包地址,并且该钱包地址上拥有该 NFT,验证通过后就会给你一个 Holder 身份认证。
如果大家看到的签名内容是这种明文可读的就没有什么问题了,你能看明白这段话是什么意思。但注意胡乱签名也是会导致资产损失。
但如果大家看到的签名内容如上面这个截图,看不明白是什么,就别操作了。因为上面这个弹窗的签名内容是 OpenSea 的卖单签名,但卖单的价格可能被攻击者设置为 0.001E,如果你不小心在钓鱼网站对此签名了,你的 NFT 可能就会被低价卖给钓鱼者。
所以对于签名消息有一个大致原则,看得懂就签,看不懂就别签。
合约调用
大家在很多网站上遇到更多的情况是合约调用,例如 mint NFT 之类的操作等。
如果是合约调用,首先需要确定的是调用的「合约地址」是不是官方公布的合约地址,确定合约地址没问题之后再看调用该合约的「功能类型」,如果「调用功能」类型显示 approve、setApprovalForAll、transfer、safeTransferFrom 之类的字样就需要警惕了,因为这是给出授权让别人可以转移走你的资产,这也是最常见的钓鱼方式。
前文所说的 OpenSea 的 Discord 被攻击发出的钓鱼网址,以及本人下面推特分享的案例都是这种方式。
所以对于合约调用的总体原则就是:确认合约地址正确,确认操作类型不是 approve、setApprovalForAll、transfer、safeTransferFrom 等字样。
对于运营者
对于大部分场景做到以上,普通用户就可以避坑了,但是作为 Discord 的运营者,我们需要比普通用户更尽责地保护社区成员的安全,避免因为运营者的安全疏忽导致用户的损失。对于 Discord 的运营者,也有以下几点需要注意的:
开启 2FA
没有开启 2FA 的话,一旦账号密码泄漏,那么攻击者就可以利用管理者的账号发布钓鱼信息。
别点陌生链接
目前发现有针对于 Discord 管理者钓鱼的网站,管理者进入网站被引导后会让攻击者得到管理者的 Discord session,攻击者利用 session 就可以绕开 2FA 及登陆验证,直接以管理员的身份接管 Discord 社区了。下面推文有详细分析,感兴趣的朋友可以看看。
尽量少引入 Bot
为社区每增加一个 Bot,就会带来多一分的安全风险,任何一个 Bot 被攻击者利用了,都能够对社区的 Discord 发起 SCAM 攻击。
Crepto 社区只引入了一个外部 Bot,CollabLand,用于验证 holder 的身份,毕竟已经是 Discord 标配了。其他 Bot 如果不是必须使用的话,Crepto 社区也就不再引入了。
引入 Bot 权限过大
Discord 管理员引入 Bot 的时候,需要注意 Bot 索取的服务器权限,秉持最小授权原则,如果发现一个功能简单的 Bot 要求管理员权限的话,最好不要引入。因为这个 Bot 的项目方如果被攻击,轻则只是给您的 Discord 社区发送垃圾消息,重则它可以剔出所有用户,删除所有频道和记录。
上面是引入 CollabLand Bot 时索取服务器的权限,CollabLand Bot 要求授权的是「管理员」这个最高权限。CollabLand Bot 的作用是给通过认证了的 holder 授予了某个角色,实际上 CollabLand Bot 只需要索取管理 Member 和 Role 的权限就足够了,但不知道为何索要了最高权限?也希望知道的朋友告知一下。
所以对于 Discord 的管理者来说,Discord 的安全主要在于:
- 管理者账号的安全
- Bot 的安全
管理者账号的安全可以由团队提升安全意识来保证,但 Bot 的安全对于管理者来说却无能为力,所以管理者只能是秉持能少用 Bot 就少用,能少给授权就少给的原则来处理即可。
对于开发者
Crepto 社区已经开发了两款 Discord Bot,也算是对 Discord 的开发有所了解。所以对于在 Discord 上进行开发的朋友们,也给出了以下几点安全建议:
Bot 的 Token 一定要保证安全
Discord 的开发者都知道,Bot 的生命线就掌握在 Token 上,Token 被攻击者拿到之后,攻击者可以利用你的 Bot 干他想干的任何事情,所以千万需要像重视钱包私钥安全那样去重视 Bot 的 Token。
运行 Bot 的服务器安全
服务器安全的话题可以无限展开,但这里就提醒一点,Bot Token 的安全十分重要,Bot 是在服务器上运行的,所以服务器被攻破意味着 Token 也泄漏了,当然还有 Bot 所获取 Discord 上的所有数据也全泄漏了。
养成定期更换 Token 的习惯
就跟一些网站定期要求用户更换密码一样,虽然 Discord 没有强制要求开发者定期更换 Bot 的 Token,但我认为养成定期更换 Token 是必不可少的,特别是你的 Bot 用户数量多的时候。
Bot 按需索取权限
千万别无脑索取 Discord 服务器的「管理员」权限,确认你的 Bot 需要用到哪些功能,再去索取相应的权限。这样即便你的 Bot 被黑,那么受损程度也被控制在一定范围之内。
对于开发者的总体原则就是保证 Bot Token 的安全,以及最小索取你的 Bot 权限。
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場