您现在的位置是:网络安全 >>正文
哈希函数的隐藏危险:长度扩展攻击与服务端验证的安全隐患
网络安全6人已围观
简介简介Length Extension Attack 是一种与某些特定类型的哈希函数如 MD5,SHA-1 和 SHA-2)的特性有关的攻击。简单来说,这种攻击利用了一个事实,即知道 H(message ...
简介
Length Extension Attack 是哈希函数患一种与某些特定类型的哈希函数(如 MD5,SHA-1 和 SHA-2)的隐度扩的安特性有关的攻击 。简单来说 ,藏危这种攻击利用了一个事实,险长即知道 H(message) 和 message 的展攻长度,我们可以轻松计算出 H(message || padding || extension) 而不需要知道 message 本身。击服其中 “||” 表示连接,验证“padding” 是全隐根据哈希函数的规定添加的 。亿华云
这是哈希函数患因为这些哈希函数使用了 Merkle-Damgård 结构,它将输入切片为多个块,隐度扩的安并且每个块的藏危哈希值依赖于前一个块的哈希值。这意味着一旦我们计算出了某个消息的险长哈希值,就有了一个状态 ,展攻可以从那里开始并添加更多的击服块 。
一种服务端验证模式
为方便描述漏洞场景 ,验证我们首先假设有这样一种服务端验证模式,即用户尝试登录时,服务端会根据用户的香港云服务器 ID、名字以及一个仅服务端知道的 30 位密钥 ,通过特定的哈希算法生成一个哈希值,并将其下发给客户端。随后,当客户端尝试访问某些特定接口 ,例如修改用户权限的接口时 ,服务端会根据前端 POST 的角色 ID、角色名字 、角色权限以及同样的 30 位密钥,重新生成哈希进行验证。服务器租用如果上传的哈希与服务端生成的哈希一致,则视为验证通过 ,并将新的角色权限写入数据库。
为便于理解,下面是根据描述写的一些简单的代码做为示例:


越权思路
由于验证模式存在漏洞,攻击者可以在不知道 SecretKey 的情况下,通过重新构造交易请求 ,达到绕过权限验证的目的源码库 。越权攻击的核心思路在于利用长度扩展攻击的特性 。攻击者首先需要获取到原始的哈希值 ,并通过简单的迭代算法计算出原始数据的长度。一旦得到这些信息,就可以将额外的越权参数添加到原始数据中 ,并利用相同的哈希算法生成恶意的哈希值 。
长度扩展攻击原理
Length Extension Attack 发生的免费模板原因在于部分哈希函数的内部机制 。这些函数在处理输入数据前 ,首先将数据分割成固定长度的块 ,然后在每个块的末尾进行填充以满足特定的要求 。这种设计导致攻击者可以在知道原始消息哈希值和长度的情况下,通过填充和附加新数据,构造出新的有效哈希值 。
以 SHA-256 为例 ,其工作在 512 比特的块上。源码下载对于长度不是 512 比特的倍数的数据,需要进行填充操作 。其填充规则如下:
1. 在数据的末尾添加一个 “1” 比特;
2. 添加一定数量的 “0” 比特 ,使得数据的长度模 512 等于 448(详细内容见 [1]);
3. 在最后面添加一个 64 位长的块,表示原始数据的长度。
简而言之,将一个 “1” 后面跟着 m 个 “0”,再加上一个 64 位或 128 位的整数 ,附加到消息的末尾 ,以生成长度为 512*n 的填充消息 。附加的整数是原始消息的长度。然后,填充消息将被哈希函数处理为 n 个 512 位的块 。
构造方法
在这个示例中 ,我们将以上面图片提到的代码做为一个特定的场景 ,其中数据字符串为 data="user_id=1&user_name=aa" ,密钥为 SecretKey="Length_extension_attack_secret"。服务端会解析上传的数据中的 data 字段,并通过分隔符 & 解析出所需的参数 user_id 和 user_name。如果存在 role 字段,服务端也会获取该字段的值。然后,服务端会将所有字段与 SecretKey 进行哈希运算,并与上传的验证哈希进行比较。如果哈希值一致,则认为参数符合规则,并直接使用 。
首先 ,我们通过登录 loginHandler 接口获取根据 data 和 SecretKey 使用 SHA-256 生成的哈希值 hash="37d310d3465506486431fb2c2eb163f0f470479703f66dc9e5fdead8a3390c68"。
接下来 ,我们将探讨破解的难度。以我们的测试情况为例,根据长度扩展攻击的原理 ,只要知道 H(message) 和 message 的长度,我们就可以通过长度扩展攻击添加新的数据 。原来的 message = SecretKey + data,现在我们手上已经有 H(message) ,只需知道 message 的长度 ,就可以构造一个新的哈希值。由于 SecretKey 是一个 30 位的密钥,只需经过 30 次迭代,就可以得知真正的 message 的长度。因此 ,我们可以很容易地构造出一个新的哈希值 。由于我们需要使用 admin 的权限,所以我们要将恶意的字段 "&role=admin" 拼接到原来的数据中 。
我们可以利用长度扩展攻击的特性,在不知道 SecretKey 的情况下 ,添加新的数据并生成一个新的哈希值。这里使用一个已经实现此功能的库 [2] 来完成测试 。再使用工具生成新的哈希值 。
由于 adminActionHandler 的接口验证是根据上传的 user_id,user_name 和 role 来验证 hash 的,我们这时候上传的数据是 user_id=1 ,user_name=aa\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x70 以及 role=admin ,如下图所示:
1694066958_64f9690e9ddbe559f0117.png!small
哈希值为 84ae4ae437eeabf3bd8a26294392770b86f64a81998194156ac003d58a21acd0。之后就可以调用 adminActionHandler 接口 ,服务端收到数据后,会把上传的哈希与 sha256(SecretKey + fakeData) 进行对比,通过验证之后将会执行一些敏感操作 。这样 ,我们就成功地利用长度扩展攻击绕过了服务端验证,并实现了越权操作 。
其他可能的攻击场景
1. 文件完整性验证:如果文件的完整性是通过连接密钥和文件内容 ,然后对其进行哈希来验证的,那么攻击者可能会扩展文件并生成一个有效的哈希,从而绕过完整性检查;
2. Web 应用安全:在 Web 应用中,如果使用了易受长度扩展攻击的哈希函数来验证用户提交的数据 ,攻击者可能会利用这一点来提交恶意数据;
3. 数字签名:在某些数字签名方案中,如果签名是通过连接私钥和消息,然后对其进行哈希来生成的 ,那么攻击者可能会扩展消息并生成一个有效的签名;
4. 密码存储:虽然不常见 ,但如果密码是通过连接密钥(例如盐)和密码 ,然后对其进行哈希来存储的 ,那么攻击者可能会尝试使用长度扩展攻击来破解密码 。
如何防范
1. 选择不易受长度扩展攻击的哈希函数 ,例如 SHA-3;
2. 使用 HMAC :HMAC 需要一个密钥和一个消息作为输入,输出的结果既依赖于密钥,也依赖于消息 ,因此攻击者在不知道密钥的情况下无法进行长度扩展攻击;
3. 加强权限验证:在服务端增加额外的权限验证步骤,例如使用多因素认证 。
以下是一些常用的 Hash 算法的特性:

结语
对于长度扩展攻击,一种有效的防护措施是使用不受此类攻击影响的哈希函数,例如 SHA-3 和 BLAKE2。另外,还可以通过 HMAC(密钥散列消息认证码)结构来进行防护 。这些措施可有效提高系统的安全性 ,确保数据完整性和应用程序的稳定性 。
参考链接:
[1] https://www.rfc-editor.org/rfc/rfc6234#page-8
[2] https://github.com/skerkour/kerkour.com/tree/main/blog/2023/sha256_length_extension_attacks
本文作者:慢雾科技 , 转载请注明来自FreeBuf.COM
Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“信息技术视野”。http://www.bziz.cn/news/505c699488.html
相关文章
2024 Fortinet OT工业安全高峰论坛成功举办 开启OT安全平台时代
网络安全9月10日,“2024年Fortinet OT工业安全高峰论坛”于广州圆满闭幕。盛会紧扣“工业安全新行动,智驭AI新时代”主题,汇聚全球OT领域精英、技术先锋及安全领域翘楚,共谋OT现代化浪潮下的安全 ...
【网络安全】
阅读更多聊聊密码、密钥和熟悉度偏差
网络安全随着密码无密码身份验证)的采用,误解比比皆是。人们似乎普遍认为万能钥匙可能比密码更方便但安全性更低。现实情况是,它们更安全、更方便——可能是网络安全领域的首创。我们大多数人没有意识到无密码身份验证比密 ...
【网络安全】
阅读更多APT组织UAC-0099利用WinRAR漏洞攻击乌克兰
网络安全据Securityaffairs网站消息,UAC-0099的威胁行为者正在利用WinRAR中的一个高危漏洞CVE-2023-38831对乌克兰投放LONEPAGE恶意软件。实际上,自2022年中旬以来 ...
【网络安全】
阅读更多
热门文章
最新文章
友情链接
- 小米膜的优点和特点(为你的手机屏幕保驾护航)
- 烈焰战神1050ti(探索烈焰战神1050ti的卓越性能与多功能特性)
- SKG抽油烟机质量评测(全面分析SKG抽油烟机的性能与可靠性)
- 体验XboxOneX的卓越性能与极致画质(探索一台引领游戏娱乐新纪元的游戏机)
- 推动产学研融合创新发展,紫光云工业互联网平台应用创新推广中心落地辽宁
- X270在双核CPU中的性能表现(探索X270在双核CPU中的优势和应用场景)
- 使用U盘安装新硬盘系统教程(一步步教你如何利用U盘轻松安装新硬盘系统)
- 蒸汽吸尘器的清洁效果及优点(以蒸汽吸尘器为主题的家居清洁新选择)
- 推动产学研融合创新发展,紫光云工业互联网平台应用创新推广中心落地辽宁
- 揭秘苹果耳机6s音质的绝佳表现(聆听细节世界,感受耳边的音乐奇迹) 源码库云服务器亿华云香港物理机企业服务器b2b信息平台网站建设