2010-02-15 44 views
3

我被要求监督审查一些第三方代码(在这种情况下为Freeware C#Sharepoint webpart),然后将其纳入企业内部网络。最大的担忧是隐藏在Web部件中的恶意代码,该代码会窃取数据/将信息发回给Web部件创建者/等,次要担心会导致性能问题。查看安全问题的第三方代码

我们有源代码,在这种情况下,只有不到2000行的代码,所以手动运行它并不难,并确保一切正常。对于更大型的工作来说,需要采取什么样的方法来审计代码,以确保尽可能安全?我们将来需要为更大的代码库做到这一点。

回答

1

将其分解成模块并单独检查它们。

查看每种方法以确保其按广告执行。从只进行API调用的最底层的方法开始 - 一旦你已经证实那些做了他们所说的话,那么你就可以验证调用它们的方法,而不用担心它们到底做了什么。

解决此问题的一种方法是查看“盲目”方法,写下您认为它的工作方式,然后将其与文档中所述内容进行比较。

1

的文章那么,你不在乎,如果代码是不安全的,你会得到被中国黑客攻击?通常,当人们进行代码审查时,他们关心的是受到外部人士的攻击,而大多数商业工具反映了这一点。请记住,黑客经常利用许多不同类型的漏洞而无需访问源代码。针对C#的最佳商业静态分析工具是Fortify。不幸的是,如果有人正在编写后门,它可能看起来像任何东西,甚至手动代码审查可能会错过这个问题。

在劫持信息的情况下,我建议创建一个构建验证测试,查看网络流量。构建验证测试对于在开发过程中维护稳定的代码库非常重要。尽管粗略的测试应用程序,你想看看是否有网络流量被设置为未知的服务器。你甚至可以运行这个构建验证日/月/年来查看应用程序是否以意想不到的方式运行。毋庸置疑,这款特定的猫捉老鼠游戏相当棘手,我不相信可以有一个防弹解决方案。

2

如果你真的相信有一个邪恶的后门甚至有一个远程的可能性,你不应该使用代码。这是一种让我感到困惑的企业任务。即使它是免费的,它也永远不值得冒这个险。

这就是说,来自信誉良好的来源的代码可能比您自己的代码更安全,因为它在更大和更多样化的用户群中进行了测试(希望)。如果审查仅仅是为了安抚管理和代码运行在一个虚拟机,守护自己与运行时的安全功能:

如果代码编译本地或解释,事情变得更加棘手。寻找无意义的图书馆内容:图书馆中的TCP与网络无关,文件IO不属于它......再一次,如果我没有,我个人不会触及它100%的信念。

至于性能,请像处理应用程序的其他部分一样对待。在知道存在问题之前不要进行优化。如果您看到性能问题,并且您的跟踪将您带到第三方代码,请进一步追踪并找到问题。如果问题看起来很重要且怪诞,则不要使用该代码。这可能暗示着其他不好的事情。