v****e 发帖数: 10715 | 1 【 以下文字转载自 PDA 讨论区 】
发信人: zjn (严禁灌水), 信区: PDA
标 题: 来个学术贴具体分析一下heartbleed的原理.
发信站: BBS 未名空间站 (Fri Apr 11 01:24:17 2014, 美东)
heartbleed的fix在这里:
https://bugzilla.redhat.com/attachment.cgi?id=883475&action=diff#a/ssl/d1_
both.c_sec1
问题出在直接拿了进来的数据包里面的两个字节作为后面memcpy的长度, 如果一个恶意
的数据包里给个64K作为长度而实际的数据包长度小于64KB, openssl就会把这个数据包
之后的内存内容拷贝发回.
由于用来存数据包的内存是动态分配的, 一般heap实现会将近似大小的动态分配内存放
在一个大的segment中,hacker应当可以读取64KB的和恶意数据包大小近似的动态分配内
存内容. 通过控制数据包长度, 加上知道重要的数据结构的大小, 应当有可能得到非常
重要的内容. 这确实是个十分严重的bug.
十分怀疑这程序员是故意的,这么低级的错误不可能出自一个开发安全协议的程序员手
中. 就好比比一个成人再迷惑也不会不知道1+1=2. 那个是NSA的间谍的怀疑是靠谱的.
|
|