Bugs fixed:)

pull/1/head
evilcos 2 years ago
parent 90a54a0b3b
commit a37bad8cff
  1. 16
      README.md
  2. BIN
      res/metamask_sign.jpg
  3. BIN
      res/metamask_sign.png
  4. BIN
      res/solana_nft_phishing.jpg
  5. BIN
      res/solana_nft_phishing.png
  6. BIN
      res/sushiswap_3rd.png

@ -373,7 +373,7 @@ DeFi 安全至少包括如下几部分:
还有一种削弱项目方权限过大风险的做法是:将 admin 多签了,比如用 Gnosis Safe 进行多签管理,这样至少不会出现一言堂。这里需要注意的是,多签可以是“皇帝的新衣”,比如一个人掌握了多把钥匙。所以目标项目的多签策略需要公示说明清楚,钥匙都由谁保管,保管钥匙的角色也一定是有口碑的。
这里需要特别注意,任何安全策略,都可能出现“皇帝的新衣”问题,表面做得好,实际上却不是,呈现出了一种虚假安全感。再举个例子,Timelock 这玩意,看去似乎挺好,实际上出现过有的项目方部署的 Timelock 是有后门的。用户一般也不会直接去看 Timelock 源码,而且也不一定看得懂,于是放了个后门在那,一时半会还真不一定有人留意到。
这里需要特别注意,任何安全策略,都可能出现“皇帝的新衣”问题,表面做得好,实际上却不是,呈现出了一种虚假安全感。再举个例子,Timelock 这玩意,看去似乎挺好,实际上出现过有的项目方部署的 Timelock 是有后门的情况。用户一般也不会直接去看 Timelock 源码,而且也不一定看得懂,于是放了个后门在那,一时半会还真不一定有人留意到。
除了权限过大风险,智能合约安全的其他内容也都很关键,但理解门槛还是挺高的,这里就不展开了,我的建议是这样:至少可以逐步学会阅读安全审计报告,熟能生巧。
@ -508,7 +508,7 @@ OpenSea 在 2022 年前后出现过数起用户持有的知名 NFT 被盗事件
我这里拿其中一个 NFT 市场进行具体说明(不一定是 OpenSea)。当目标用户在 NFT 市场里授权了相关 NFT 挂单后,攻击者构造了正确的待签名内容,通过 Keccak256 哈希后,在钓鱼页面上弹出了待签名的内容给用户,此时用户看到的东西如下:
![](res/metamask_sign.png)
![](res/metamask_sign.jpg)
仔细看,MetaMask 弹出的这个窗口,能看出什么?账户及余额、签名请求的来源网站、正在签名的消息,没了...就这点内容,用户怎么会想到自己一旦点击了“签名”后,灾难就来了,自己的相关 NFT 就可以被盗走了。
@ -516,7 +516,7 @@ OpenSea 在 2022 年前后出现过数起用户持有的知名 NFT 被盗事件
为什么会出现这种情况,最最本质的原因还是在于签名并不存在浏览器同源策略的约束,你可以简单理解为:同源策略可以确保一个行为只在明确的域名下发生,不会跨域发生,除非项目方故意要跨域的发生。如果签名有同源策略,那么非目标域名产生的请求签名,即使用户签名完成了,黑客也没法将这个签名用于目标域名下的攻击。这里就不继续展开说了,协议级别的安全改进,我有注意到新草案,我希望这种情况能尽快得到改善。
目前提到的签名安全涵盖了主要方式,但变种其实挺多,无论如何,万变不离其宗。最好的吃透方式是自己从头到尾完将攻击复现一遍,甚至首创一些独特的攻击方式。比如这里提到的签名,其实里面有大量细节,比如如何构造待签名内容、签名后的内容具体都是什么?除了 approve 这种授权方式,还有其他的吗(有,比如 increaseAllowance)。好吧,这里展开的话就太过技术了。很好的是,你清楚签名的重要性了。
目前提到的签名安全涵盖了主要方式,但变种其实挺多,无论如何,万变不离其宗。最好的吃透方式是自己从头到尾完将攻击复现一遍,甚至首创一些独特的攻击方式。比如这里提到的签名,其实里面有大量细节,比如如何构造待签名内容、签名后的内容具体都是什么?除了 approve 这种授权方式,还有其他的吗(有,比如 increaseAllowance)。好吧,这里展开的话就太过技术了。很好的是,你清楚签名的重要性了。
对于用户来说,取消授权(approve)是可能在源头上对抗这类攻击的,你可以用如下这些知名的工具来操作:
@ -551,9 +551,9 @@ OpenSea 在 2022 年前后出现过数起用户持有的知名 NFT 被盗事件
好,让我们来看看这个反常识真实案例。
![](res/solana_nft_phishing.png)
![](res/solana_nft_phishing.jpg)
2022.3.5,一个安全预警:Solana 上的授权钓鱼残忍多了,攻击者批量给用户空投 NFT(图1) ,用户通过空投 NFT 描述内容里的链接(www_officialsolanarares_net)进入目标网站,连接钱包(图2),点击页面上的“Mint”,出现批准提示框(图3)。注意,此时的批准提示框并没有什么特别提示,当批准后,该钱包里的所有 SOL 都会被转走。
2022.3.5,一个安全预警:Solana 上的授权钓鱼残忍多了,攻击者批量给用户空投 NFT(图 1) ,用户通过空投 NFT 描述内容里的链接(www_officialsolanarares_net)进入目标网站,连接钱包(图 2),点击页面上的“Mint”,出现批准提示框(图 3)。注意,此时的批准提示框并没有什么特别提示,当批准后,该钱包里的所有 SOL 都会被转走。
当点击“批准”时,用户会和攻击者部署的恶意合约交互:
*3VtjHnDuDD1QreJiYNziDsdkeALMT6b2F9j3AXdL4q8v*
@ -717,7 +717,7 @@ Bitwarden 做得更彻底些,是全开源的,包括服务端,任何人都
### 双因素认证
你在互联网上的身份安全,第一层靠的是密码,第二层得靠双因素,第三层靠的是目标项目本身的风控能力。我不能说双因素都是标配,比如你在用的去中心化钱包,有一层密码就够烦了(现在基本都配套人脸、指纹这类生物识别来提高体验),双因素就算了吧。但在中心化平台里,没有双因素可不行。因为中心化平台任何人都可以访问或有能力访问,你的密码被盗了,意味着你的账号权限失守,资金也就没了。而你去中心化钱包,密码仅仅只是发生在本地的认证,黑客即使拿到这个密码,还需要有能力接触到你这个钱包所在的设备。
你在互联网上的身份安全,第一层靠的是密码,第二层得靠双因素,第三层靠的是目标项目本身的风控能力。我不能说双因素都是标配,比如你在用的去中心化钱包,有一层密码就够烦了(现在基本都配套人脸、指纹这类生物识别来提高体验),双因素就算了吧。但在中心化平台里,没有双因素可不行。因为中心化平台任何人都可以访问或有能力访问,你的密码被盗了,意味着你的账号权限失守,资金也就没了。而你去中心化钱包,密码仅仅只是发生在本地的认证,黑客即使拿到这个密码,还需要有能力接触到你这个钱包所在的设备。
明白其中区别了吧?好,知名的双因素认证(2FA)工具有:Google Authenticator、Microsoft Authenticator 等,当然如果你用密码管理器(如 1Password)也是自带了 2FA 功能的,非常方便。无论如何都记得做好备份,因为丢失 2FA 是一件很麻烦的事。
@ -902,8 +902,8 @@ Punycode 这种钓鱼方式,几年前就有真实利用了,比如 2018 年
我们遇到许多人被盗币后,来咨询我们怎么办,很纠结的是,许多人难以表达清晰,更别说出具清晰的事故报告了。但我觉得表达是可以练习或依葫芦画瓢出来的。比如至少把以下几点说明下:
* 概要1:什么人、什么时间、发生了什么事、总损失多少?
* 概要2:损失有关的钱包地址、黑客钱包地址、币种类型、数量,一个表格就比较清晰了。
* 概要 1:什么人、什么时间、发生了什么事、总损失多少?
* 概要 2:损失有关的钱包地址、黑客钱包地址、币种类型、数量,一个表格就比较清晰了。
* 过程描述:这点才是最难的,这里需要把这个事故过程的方方面面细节点描述出来,这甚至会分析出黑客有关的各种痕迹,最终输出黑客画像(其中包括了作恶动机)
我们具体在对接时,模板会复杂的多,循序渐进的。有时候人的记忆也是有问题,甚至出现刻意隐瞒关键信息导致浪费时间或耽误了绝佳时机。所以在实际对接中,消耗是真大,我们需要用我们的经验去做好引导工作。最终和丢币的人或项目方一起出具事故报告,并不断更新这份事故报告。

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 476 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Loading…
Cancel
Save