gpt4 book ai didi

c - maloc 是如何设法获取已在 SSL Heartbeat 中分配的内存的?

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:39 24 4
gpt4 key购买 nike

最近的 Heartbleed 漏洞是由这种特殊的未经检查的执行引起的:

buffer = OPENSSL_malloc(1 + 2 + payload + padding);

(根据 http://java.dzone.com/articles/everything-you-need-know-about-2 )

但是 malloc 怎么可能随时获取已经分配到其他地方的内存。尽管 payloadpadding 变量由用户值填充,但在我看来,这些变量只会导致内存不足错误(非常大值),并且不是为了读取这个缓冲区之外的服务器 RAM 而改变地址空间。

最佳答案

OpenSSL 使用自己的内存分配器(他们说是出于速度原因)。因此,内存永远不会传回给操作系统。相反,他们汇集未使用的缓冲区并重新使用它们。

如果您调用 OPENSSL_malloc,您获得的缓冲区包含 OpenSSL 之前使用的数据的可能性几乎是 100%。这可能是加密数据、未加密数据甚至是私有(private)加密 key 。

关于c - maloc 是如何设法获取已在 SSL Heartbeat 中分配的内存的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23032594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com