Bugs fixed:)

This commit is contained in:
evilcos 2022-04-12 16:11:30 +08:00
parent 90a54a0b3b
commit a37bad8cff
6 changed files with 8 additions and 8 deletions

View File

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

BIN
res/metamask_sign.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

BIN
res/solana_nft_phishing.jpg Normal file

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