减少PHP插件恶意的可能性

时间:2010-07-03 08:18:41

标签: php security wordpress plugins wordpress-plugin

我想知道您使用哪些步骤来保护下载的插件不被恶意?

例如,wordpress如何确保您下载的插件不会简单地执行unlink('/')

我认为部分取决于下载器安装插件以使用他或她自己的判断,但是插件系统是否采取措施来最小化运行第三方插件的安全风险?

谢谢! 马特穆勒

3 个答案:

答案 0 :(得分:5)

简单回答:你不能以编程方式执行此操作。根本无法做到。当然,Wordpress有一个验证器可以确定插件是否完全令人讨厌,但是没有办法确定它是否安全。

今年夏天我是Mozilla的实习生,我正在研究附加组件的验证器,因为它们已经提交给addons.mozilla.org。我只能想象Wordpress在他们的结尾有一个非常相似的工具。这个想法是应用程序完全拒绝公然的恶意代码(eval("evil nasty code");),而其余部分则通过一些简单的启发式方法进行分析。这些算法根据它在附加软件包中看到的内容来标记一些潜在的红色标记,并将这些注释提交给编辑,编辑然后查看代码。它实际上最终成为一个以人为本的过程,但该软件有助于处理大量繁重工作。

Mozilla验证器使用的一些技术:

  • 语法检查
  • 用于查找远程代码漏洞的代码和标记解析(HTML / CSS)
  • Javascript解析和分析(将JS解析为AST树并分析每个语句,尽可能深地评估静态表达式)
  • 兼容性/弃用测试

您可以在此处查看代码:

http://github.com/mattbasta/amo-validator

希望这有帮助!

答案 1 :(得分:3)

unlink('/')不会造成任何伤害,因为它只会删除文件,您必须使用rmdir或更准确的递归 rmdir实施。我认为没有办法防止恶意代码被执行,因为有很多恶意方法。您可以限制在php.ini中调用某些函数,但这只会帮助您达到某一点。例如,str_repeatunserialize是常用函数,但如果使用正确的参数调用它们,它们可以立即释放分配给PHP脚本的所有内存。但这只是一个例子,一个更邪恶的人可以充当后门或电子邮件所有登录到开发人员。我想最后如果你不想自己审核代码,你必须要相信开发人员和社区。

答案 2 :(得分:1)

有些工具可以Static Source Code Analysis来查找漏洞。 php的开源分析工具包括RATSPHP-SAT

如果您曾使用静态源代码分析,那么您就会知道这些工具会产生 TON 的误报和漏报。没有源代码分析工具可以告诉你100%的天气,程序有后门或可能是恶意的。如果它可以,那么我们就不会有很多网站被黑客攻击的问题。 Wordpress的自我是非常不安全的,所有的插件都是如此,这是因为错误,而不是恶意。

恶意代码可以被混淆,隐藏并呈现多种形式。试图找到一个意外的漏洞比一个有意的漏洞要容易得多。 PHP中的后门可以像添加或删除 2个字节一样简单。

删除2个字节:

$id=mysql_real_escape_string($id);
"select * from test where id=$id"
vs
"select * from test where id='$id'"

或添加2个字节:

`$_GET[b]`;