php - PHP 沙箱的安全问题

标签 php

我正在为 Web 应用程序蜜 jar 开发 PHP 沙箱。 PHP 沙箱将分析可能作为 RFI 攻击的一部分注入(inject)的 PHP 文件。它应该在安全的环境中运行文件并返回结果,嵌入 PHP 脚本的输出。我们希望愚弄攻击者相信这是一个真正的回应,从而继续他的下一步攻击。

为了构建沙箱,我们使用了 Advance PHP Debugger (ADP)。使用 rename_functionoverride_function,易受攻击的 PHP 函数已被重写。 execdisk_free_space 等函数已被重写以发送虚假回复。所有其他函数只返回任何内容。 Here's已考虑的功能的完整列表。

此外,输入脚本在沙盒中最多只运行 10 秒。之后,整个沙盒进程被杀死。

  1. 这份 list 够好吗?这是否使沙箱足够安全以成为网络应用程序的一部分?

  2. 除了像这样阻止函数调用外,是否还应该采取其他安全措施?

  3. 归根结底,这是一个蜜 jar 。因此,我们希望我们的回复尽可能接近真实回复。因此,通过阻止像 dns_check_recordgethostbyname 这样的 DNS 函数调用,我们是在不必要地限制脚本的执行范围。 (我不确定为什么他们首先出现)

    简而言之,我想知道我应该从列表中添加/删除哪些元素。

  4. 任何其他有关如何解决此问题的建议/意见将不胜感激。

最佳答案

我认为即使不是不可能,也很难预见所有可能的有害函数调用以伪造它们的输出(例如,highlight_file 或其别名 show_source 不在您的列表中)。此外,为真实应用程序和蜜 jar 使用相同的服务器会引发其他问题:应用程序是否使用扩展?如果它有更多的功能必须被阻止/伪造。如果您更新其中一个扩展怎么办?您将不得不重新检查新的安全漏洞。另外,如果恶意文件被上传到蜜 jar ,然后从主应用程序访问怎么办?当然你会采取措施不允许这种情况发生,但如果你在某个时候有错误,有害代码将已经在服务器上......对我来说看起来不安全。

我认为最好按照 MitMaro 的建议设置虚拟机。在那种情况下,VM 本身就像一个沙箱一样好,而且无需付出太多努力,您就可以让所有那些讨厌的 php 函数在 VM 内执行,而不会影响主应用程序的安全性

关于php - PHP 沙箱的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9857920/

相关文章:

php - 如何使用 php + css 更改事件菜单的样式

php - 如何在php mysql中相对于列插入csv数组数据

PHPUnit 和测试 CRUD 方法

php - 如何从树状数组创建 ul-li 菜单?

php - 使 mysql 连接静态化是个好主意吗?

javascript - 在同一页面中传递 reCAPTCHA 后,如何重新发送前一个 url 的数据?

php - 如果用户不知道您的 Google Play 帐户,您应该如何获得 oAuth 代码?

php - 生成范围内所有可能的 MAC 地址

php - 使用 $_SERVER ['document_root' ] 有什么意义?

php - 脚本超时已过,如果您想完成导入,请重新提交相同的文件,导入将恢复