我正在为 Web 应用程序蜜 jar 开发 PHP 沙箱。 PHP 沙箱将分析可能作为 RFI 攻击的一部分注入(inject)的 PHP 文件。它应该在安全的环境中运行文件并返回结果,嵌入 PHP 脚本的输出。我们希望愚弄攻击者相信这是一个真正的回应,从而继续他的下一步攻击。
为了构建沙箱,我们使用了 Advance PHP Debugger (ADP)。使用 rename_function
和 override_function
,易受攻击的 PHP 函数已被重写。 exec
、disk_free_space
等函数已被重写以发送虚假回复。所有其他函数只返回任何内容。 Here's已考虑的功能的完整列表。
此外,输入脚本在沙盒中最多只运行 10 秒。之后,整个沙盒进程被杀死。
这份 list 够好吗?这是否使沙箱足够安全以成为网络应用程序的一部分?
除了像这样阻止函数调用外,是否还应该采取其他安全措施?
归根结底,这是一个蜜 jar 。因此,我们希望我们的回复尽可能接近真实回复。因此,通过阻止像
dns_check_record
和gethostbyname
这样的 DNS 函数调用,我们是在不必要地限制脚本的执行范围。 (我不确定为什么他们首先出现)简而言之,我想知道我应该从列表中添加/删除哪些元素。
任何其他有关如何解决此问题的建议/意见将不胜感激。
最佳答案
我认为即使不是不可能,也很难预见所有可能的有害函数调用以伪造它们的输出(例如,highlight_file 或其别名 show_source 不在您的列表中)。此外,为真实应用程序和蜜 jar 使用相同的服务器会引发其他问题:应用程序是否使用扩展?如果它有更多的功能必须被阻止/伪造。如果您更新其中一个扩展怎么办?您将不得不重新检查新的安全漏洞。另外,如果恶意文件被上传到蜜 jar ,然后从主应用程序访问怎么办?当然你会采取措施不允许这种情况发生,但如果你在某个时候有错误,有害代码将已经在服务器上......对我来说看起来不安全。
我认为最好按照 MitMaro 的建议设置虚拟机。在那种情况下,VM 本身就像一个沙箱一样好,而且无需付出太多努力,您就可以让所有那些讨厌的 php 函数在 VM 内执行,而不会影响主应用程序的安全性
关于php - PHP 沙箱的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9857920/