主页 > imtokenusdt钱包 > 区块链安全技术总结

区块链安全技术总结

imtokenusdt钱包 2023-10-05 05:07:09

0x00 前言

区块链的安全要求越来越高。让我们一一分解这些要求,看看区块链的安全要求是什么样的。

0x01 分裂

目前,安全服务行业的区块链安全需求更多基于其上层应用(红色箭头所指),如数字货币交易平台、移动数字货币钱包、DAPP等。

在实际测试中,也是按照这几类来划分的。下面我将讲解这些常见的区块链应用在使用过程中的风险,如何规避,以及实际操作过程中的一些案例。

0x02 新金融战场-数字货币兑换

数字货币交易所,常见的火币,OKcoin,币安都是我们韭菜赚(pei)钱(guang)的好去处。对于这类平台,只要按照通常的网站渗透思路,但一定要记住一件事,千万别想出扫描仪、Sqlmap、御剑之类的东西,否则今天的工作是做不来的。根据测试经验,这个吃力不讨好的工作放在最后,可以选择先测试的逻辑,因为数字货币平台的逻辑在几个方面来回走动:注册、登录、地址管理(充值, 提款), 交易), 委托交易查询, 买卖(法币, 货币, 杠杆和期货), 账户安全(密码修改, 谷歌验证, 手机和邮箱验证), 买家身份实名认证,场外交易。支付宝、微信、银行卡地址和二维码,以及多平台快速交易的API接口管理。

其实在功能上并不复杂,功能之间的业务关联也很明显:

注册->实名认证->手机/邮箱/谷歌验证码->法币交易获取代币->币币交易/保证金交易->提币到其他地址

这里有两个案例

案例1:在接收账户存储XSS

可将恶意脚本插入微信账号和支付宝账号,恶意脚本会随交易广告一起发送

当用户与恶意广告用户进行交易时,需要展示账户信息,此时触发XSS。

这里XSS的影响比较大,可以获取与攻击者交易的其他认证信息。

案例2:不安全买卖功能的CSRF漏洞

siteethfans.org 区块链是什么区块链是什么_区块链个人账户地址_个人如何应用区块链

进入货币交易模块,交易措施设置为每笔交易不输入密码

构造CSRF表单,生成伪造交易请求的表单,因为挂单交易是自动确认的,风险很大,交易操作容易被恶意攻击。

当用户访问点击时,表单内容提交到交易网站,买卖操作成功

0x03 口袋里的账本-移动数字货币钱包

钱包从早期的PC端全节点钱包(体积大,无法携带)转变为小巧轻便的手机钱包(即APP),让个人数字资产的管理更加快捷方便. 如图所示,手机钱包可用于资产查看、转账、地址管理等不需要全节点参与的功能。

重点关注以下四个方面:

私钥生成与存储安全 助记词生成与存储安全 Keystore 生成与存储安全与钱包密码生成与存储安全

四个方面,可以总结出多个渗透维度

密钥存储维度:私钥是否在本地明文存储,keystore是否在本地明文存储,助记词是否在本地明文存储。钱包备份:私钥导出过程是否安全(查看私钥导出过程是否防止屏幕劫持,是否存储在日志中或临时文件中) keystore导出过程安全:查看keystore导出过程是否防止屏幕劫持,无论是保存在日志中还是临时文件中)传输过程:传输数据的机密性和完整性

0x04 区块链应用新宠-DAPP

DAPP-分布式应用:基于不同的底层区块链开发平台和共识机制。现在绝大多数都在以太坊,比如各种加密游戏、分布式宠物、百度的莱兹狗、网易的网易星球、360的块猫、小米的区块链游戏加密兔等等。

这是一个在区块链中养猫的例子。

案例一:

美国最火的区块链宠物,价格不贵区块链个人账户地址,0.0019 ETH 6元左右

这款 DAPP 与传统网页或页游的最大区别在于其去中心化的结构。除浏览器和服务器外,所有兑换操作都写入以太坊的多个智能合约中。做好安全记录。

个人如何应用区块链_区块链个人账户地址_siteethfans.org 区块链是什么区块链是什么

在渗透这类DAPP时,需要考虑整个DAPP的身份认证机制是基于密码学中的公钥认证机制(私钥签名,公钥签名验证),那么后端服务器是否可以验证正确且安全地签名以下信息是关键点,比如下图中的请求(这是一个DAPP和以太坊地址绑定的过程),sign是以太坊地址的签名。对于安全验证,MITM方法可以伪造以太坊地址进行恶意绑定。同时,如果溢出不防御,比如AAAA*10000……也会出现拒绝服务的问题。

另一个问题是由以太坊的修饰符特性引起的对特权函数的恶意调用。修饰符在以太坊应用程序中用于定义某些只能由特定地址(特权地址)调用的函数。在调用该函数之前,需要验证请求的私钥。这里有风险。如果服务器能保证这些私钥不会丢失,一旦特定地址的私钥丢失,特权函数就会被恶意调用,导致其失败。估计后果。

0x05 区块链主干-智能合约

智能合约:以基于信息的方式传播、验证或执行合约的计算机协议。在没有第三方的情况下进行可追溯且不可逆转的可信交易

现在做智能合约审计的公司有慢雾科技、降维科技、智创鱼。但从审计方向来看,大方向是对合约中危险函数的使用、加密的生成和数据传输进行安全审计。

以下是智能合约审计过程中经常关注的一些问题

1. 重入问题——关键函数被多次恶意调用

使用 call.value()() 转币时,所有剩余的 Gas 都会被交给外部调用(回退函数)智能合约的回退函数,递归地withdrawBalance() 转出更多的币。攻击者可以部署包含恶意递归调用的合约,以提取公共钱包合约中的所有以太币。

修复:使用 send() 和 transfer() 转账,调用时只传递 2300Gas 以防止重入攻击。

2. 访问控制 - 任何人都可以调用初始化函数

风险:

合约A在调用模式下调用外部合约B的func()函数,在外部合约B上下文中执行func()后继续返回A的合约上下文;在delegatecall模式下调用A时,相当于调用func()代码被复制过来(其函数中涉及的变量或函数需要存在)并在A上下文空间中执行。当合约币中存在恶意代码时,直接危害合约A的运行逻辑。

修理:

每个外部调用都有潜在的安全威胁,尽量从你的智能合约中移除外部调用。如果您不能完全删除外部调用,另一种阻止这种攻击的简单方法是确保在完成所有内部工作之前不要进行外部调用。

3. 不安全的函数返回值——函数返回值不检查判断

siteethfans.org 区块链是什么区块链是什么_区块链个人账户地址_个人如何应用区块链

风险:

使用send()函数转账时,由于send()的返回值没有经过验证,如果msg.sender调用失败,send()返回false。未验证虚假并回滚,最终导致账户余额减少,但钱没有收到。

修理:

使用 transfer() 进行安全的货币转账操作。当发送失败时,状态会自动回滚。此函数调用没有返回值。

4. 跨职能竞争——余额清零前调用转接

风险:

使用withdrawBalance 函数时,调用transfer()。此时,withdrawBalance 直到 userBalances[msg.sender] = 0 才被执行;(余额清零0),则余额未清零,可继续调整transfer()重复转账。tokens。攻击者利用此漏洞恶意提币、转账。

修理:

在转移价值之前减少发送者的余额;另一种解决方案是使用互斥锁来一起缓解各种竞争条件。

5. 溢出 - 由未经检查的值引起的溢出攻击

溢出:

如果任何用户有权将uint的值更改为大于最大值(2^256),由于溢出设置为0)

向下溢出:

如果将一个uint改为小于0,会导致它下溢并设置为最大值(2^256)

修理:

个人如何应用区块链_区块链个人账户地址_siteethfans.org 区块链是什么区块链是什么

使用 SafeMath 的安全方法来安全处理数值。

6. Pseudo-randomness - 可预测的随机数生成

风险:

存储在合约中的数据可以在链上进行查询和分析。如果合约代码没有严格考虑链上数据泄露的问题,使用随机数,可能会被攻击者恶意利用来“作弊”。如果种子的使用不够随机区块链个人账户地址,则生成的随机值是可预测的。

修理:

提现和钱包转账,所以除了在写合约时严格验证输入数据的正确性,还要在Off-Chain的业务功能中验证用户输入的地址格式,防止短地址攻击的发生。.

7. 短地址攻击-使用EVM解析和0操作恶意提现

风险:

EVM 将对不符合 ERC20 的代币交易地址添加尾随零,从而导致从转账中扣除的地址的处理发生变化。攻击者通过这种方式恶意从其他地址中扣除硬币。

修理:

提现和钱包转账,所以除了在写合约时严格验证输入数据的正确性,还要在Off-Chain的业务功能中验证用户输入的地址格式,防止短地址攻击的发生。.

8. 智能合约审计工具

https://github.com/trailofbits/manticore

9. 审计步骤

面试开发者->审核.sol文件->编译->分析代码流程->运行oyente->运行Manticore->运行MAIAN->手动审核

区块链个人账户地址_个人如何应用区块链_siteethfans.org 区块链是什么区块链是什么

0x06 区块链的起源——密码学和密钥安全

区块链之所以有这么大的魔力,就在于它的底层原理,它的来源,以及对那个技术的背书——密码学

区块链密码学在哪里使用:

1.哈希算法比特币系统中用到的两个哈希函数是:SHA-256,主要用于完成PoW(Proof of Work)计算;RIPEMD160,主要用于生成比特币地址;2.Merkle 哈希树是基于哈希值的二叉树或多叉树。在计算机领域,默克尔树主要用于完整性验证处理。在分布式环境下,其完整性验证可以大大降低数据传输和计算的复杂度;3.椭圆曲线算法比特币使用基于secp256k1椭圆曲线数学的公钥密码算法进行签名和验证签名,一方面可以保证用户的账户不是冒名顶替者,另一方面用户不能拒绝他们签署的交易。交易信息用私钥签名,矿工用用户公钥验证签名。如果验证通过,则交易信息入账,交易完成;4.对称加密算法比特币官方客户端使用AES(对称分组密码算法)加密钱包文件。用户设置密码后,钱包私钥使用用户设置的密码进行AES加密,保证客户端私钥的安全。对称加密算法比特币官方客户端使用AES(对称块密码算法)加密钱包文件。用户设置密码后,钱包私钥使用用户设置的密码进行AES加密,保证客户端私钥的安全。对称加密算法比特币官方客户端使用AES(对称块密码算法)加密钱包文件。用户设置密码后,钱包私钥使用用户设置的密码进行AES加密,保证客户端私钥的安全。

最终的原则是:保护私钥。从私钥的整个生命周期来看,安全性分析可以从以下几个方面进行

1、硬件模块反拆、反功耗分析、错误注入攻击等侧信道分析能力;2. 随机数生成算法强度,随机数生成器生成随机数随机性;3. 密钥和加密 密钥参与操作过程全部在硬件中;4. 密钥导入导出过程全部在硬件中实现;

密钥恢复和备份;主要关注加密货币,私钥通过助记词辅助恢复,助记词的安全性是关键。现有的安全措施——算法白盒

静态白盒:算法+密钥+白盒密码->算法密码库(白盒库) 要更新静态白盒中的密钥,需要重新生成白盒库。

动态白盒:白盒库不需要更新,密钥+白盒密码技术->白盒密钥白盒密钥传入匹配的白盒库,执行正常的加解密功能。

实施过程如下:

现有的安全措施——密钥随机化:

椭圆曲线算法实现密钥生成和代码强化,代码混淆方法

现有的安全措施 - 共同签名/解密:

需要一个可信的后端服务器,解密/签名密钥由客户端和服务器共同生成,子密钥由他们各自保存。这种方法相对安全有效。

*本文作者:自带系统,本文属于FreeBuf原创打赏计划,未经允许禁止转载