8

可能重复:
如何在 PHP/Python 中进行缓冲区溢出?

当我遇到这个时,我正在阅读本教程:

缓冲区溢出攻击旨在溢出 PHP 应用程序中的内存分配缓冲区,或者更严重的是,在 Apache 或底层操作系统中溢出。请记住,您可能正在使用像 PHP 这样的高级语言来编写 Web 应用程序,但归根结底,您是在调用 C(在 Apache 的情况下)来完成工作。和大多数低级语言一样,C 对内存分配有严格的规定。

什么?我知道 PHP 有很好的错误检查,所以缓冲区溢出是不可能的。我应该检查用户输入长度以避免太大的数据流吗?非常感谢你

4

3 回答 3

11

是的,在当前的更改日志中,有 15 个与之相关的错误修复:

  • 修复了错误 #61807 apache_request_headers 中的缓冲区溢出,CVE-2012-2329。
  • 修复了 crypt() 中 overlog salt 的缓冲区溢出问题。(克莱门特·莱西涅,斯塔斯
  • 修复了错误 #60965(带有 $double=false 的 htmlspecialchars/entities 上的缓冲区溢出)。
  • 修复了 socket_connect() 中的堆栈缓冲区溢出。(CVE-2011-1938) 由 Mateusz Kocielski、Marek Kroemeke 和 Filip Palian 发现。(费利佩)
  • 修复了 mysqlnd_list_fields、mysqlnd_change_user 中可能的缓冲区溢出。(安德烈)
  • 修复了在 mysqlnd 中处理错误数据包时可能出现的缓冲区溢出。Stefan Esser 报道。(安德烈)
  • 修复了可能的去块过滤器缓冲区溢出。Stefan Esser 报道。(皮埃尔)
  • 修复了错误 #42862(IMAP 工具包崩溃:rfc822.c 旧例程缓冲区溢出)。(修复 CVE-2008-2829)(德米特里)
  • 修复了 FastCGI SAPI 中可能的堆栈缓冲区溢出。(安德烈·尼格马图林)
  • 修复了 fnmatch()、setlocale() 和 glob() 函数的 glibc 实现中可能触发缓冲区溢出的问题。由洛朗·加菲报道。
  • 修复了错误 #42222(php_openssl_make_REQ 中可能的缓冲区溢出)。(皮埃尔)
  • 修复了 make_http_soap_request() 中可远程触发的缓冲区溢出。(伊利亚)
  • 修复了 user_filter_factory_create() 中的缓冲区溢出问题。(伊利亚)
  • 修复了捆绑的 libxmlrpc 库中可远程触发的缓冲区溢出问题。(斯塔斯)
于 2012-08-05T15:24:28.187 回答
2

当然,当调用实际使用 C/C++ 编写的函数(这将是所有核心函数)时,可能会发生这种情况。

我相信 PHP 提供的那些基本功能已经检查过缓冲区溢出等错误,但是您无法确定何时使用自定义扩展。

于 2012-08-05T15:26:25.720 回答
0

当然它是“可能的”。我更感兴趣的问题是您认为攻击向量在哪里执行此操作(更新的 php 错误等)。此外,我认为与其他安全问题相比,这是一个不太可能被利用的目标。

于 2012-08-05T15:27:37.170 回答