在客户端的计算机上执行第三方编译的程序

时间:2010-11-07 17:58:14

标签: performance security portable-executable

我想询问您关于提高在客户端计算机上执行已编译程序的安全性的建议。我们的想法是我们将一个已编译的程序发送给客户端,但该程序已由第三方编写和编译。如何确保程序在运行时不会对客户端的操作系统造成任何伤害?什么是最好的目标,而不是显着降低执行程序的性能?

更新 我认为第三方不想损害客户的操作系统,但可能会发生错误,或者他们的程序被其他人感染。
该程序可以编译为字节码或本机,它取决于第三方。

5 个答案:

答案 0 :(得分:2)

根据您是否信任第三方,有两个主要选项。

如果您信任第三方,那么您只关心它实际上来自他们,并且它在传输过程中没有改变。代码签名是一个很好的解决方案。如果第三方签署了代码,并且您检查了签名,那么您可以检查中间没有任何更改,并证明是谁编写了它。

如果你不信任第三方,那么这是一个难题。通常的解决方案是在“沙箱”中运行代码,允许它执行一组有限的操作。这个概念已经实现了许多语言 - 谷歌“沙盒”,你会发现很多。对于Perl,请参阅SafePerl,对于Java,请参阅"Java Permissions"。其他语言也存在差异。

答案 1 :(得分:1)

签名。谷歌的“数字签名”或“代码签名”

答案 2 :(得分:1)

根据所涉及的语言和所需的权限类型,您可以使用该语言内置的沙盒功能。例如,早期版本的.NET具有“信任级别”,可以设置该信任级别来控制程序运行时的访问量(较新的版本具有类似的代码访问安全性(CAS)功能)。 Java具有控制相同内容的策略文件。

另一种可能有用的方法是使用(Microsoft)Sysinternals进程监视器运行程序,同时扫描程序正在执行的所有操作。

如果它是由第三方开发的,那么很难在不查看代码的情况下确切知道它将要做什么。这可能更像是一种合同解决方案 - 在与第三方的合同中加入处罚,并同意对任何损害承担责任。

答案 3 :(得分:1)

如果您有资源,请使用虚拟机。这通常是一个非常好的沙盒,适用于不受信任的应用程序。

如果这是一个Unix系统,请查看你可以用chroot做什么。

答案 4 :(得分:1)

另一件事是不要低估彻底测试的价值。你可以运行应用程序(在非生产环境中)并验证以下内容(不断升级的偏执狂!)

  • 可接受CPU /磁盘使用
  • 不与任何不应该联网的主机通话 - 即没有“电话主页功能”
  • 使用您选择的AV程序进行扫描
  • 你甚至可以连接pSpy或其他东西来了解它正在做什么。

此外,如果可能,请使用低权限用户运行应用程序。这将提供一定程度的“沙盒”,即应用程序将无法干扰其他过程

..也不要忽视与供应商的法律合同的价值,如果出现问题,可能经常给你一些补偿。当然,首先选择信誉良好的供应商也可以提供一定程度的保证。

-ace