【发布时间】:2014-05-30 04:13:44
【问题描述】:
在我们第一次关于安全性的 CS 讲座中,我们讨论了 C 的问题,即不检查所谓的缓冲区长度以及可以利用此漏洞的不同方式的一些示例。
在这种情况下,它看起来像是恶意读取操作的情况,应用程序只是读取了许多字节的内存
我断言 Heartbleed 错误是 C 缓冲区长度检查问题的表现是否正确?
为什么恶意使用在尝试读取另一个应用程序的内存时没有导致分段错误?
在写入内存之前简单地将内存归零(然后从内存中读取)会导致分段错误吗?或者这在操作系统之间会有所不同吗?还是在其他环境因素之间?
显然无法识别对该错误的利用。那是因为心跳函数在调用时没有记录吗?否则肯定任何对 ~64k 字符串的请求都可能是恶意的?
【问题讨论】:
-
1.是的。 2. 是同一个节目。 3.不。由服务器进程拥有,这就是导致“出血”的原因。 4. 没有保持活动的日志,这是我向您发送 1000 个字节(现在回显)的地方,但后来我只向您发送 1 个字节……嘿看,您发送回了 999 个“其他”字节.
-
为了清楚起见,读取你不拥有的内存并不一定会导致段错误,它只是未定义的行为。
-
为什么问题提示缓冲区溢出是 C 独有的
标签: c security computer-science heartbleed-bug