Rubygem有像木马一样的风险吗?

我正准备安装一个我从未听说过的Rubygem。 但有些东西让我想到“这个人是谁?”。 Ruby gem是否存在访问您计算机上的私有数据并将其传输到其他地方的风险 – 因为gem系统可以访问Internet? 或者有保护措施吗?

当然有。 您正在计算机上安装软件,该软件以调用它的脚本/用户的权限运行。 在纯Ruby中发现恶意代码可能比在二进制包中更容易。 但是,如果您认为源检查是发现恶意代码的有保证的方法,请查看负面的C竞赛 。

也就是说,如果你想编写恶意软件,那么有效的交付系统比Rubygem更有效。 如果存在的实际恶意gem的数量为0,并且因此这个恶意gem的概率同样为0,我不会感到惊讶…

见: http : //rubygems.org/read/chapter/14#page61

每当您将未知逻辑导入应用程序时,都存在恶意代码的风险。 风险仅与该应用程序可访问的数据一样深。 就像Java applet沙盒化一样。

获取您信任的签名包,或查看源代码。

如果我想了解恶意gem发生的可能性,我会看看是否已经用任何语言检测到恶意包(例如python egs或Perl的CPAN),恶意包的可能性有多大在没有人注意的情况下制作,以及ruby是否比其他语言风险更大。

我可能会看到我是否可以生成一个信任网 – 即使我不知道gem作者,我知道有人这样做吗?

我还可以看一下像Debian这样的包管理器是否检查包是否是恶意的,如果是的话,是否检查了你想要使用的gem。

我不同意上面的海报,即存在的恶意gem的概率为0.总是存在使用恶意gem的危险。 是偏执狂,但仍然完成任务。

我相信有两组gem。

首先是“众所周知的gem”,它们恰好是生物量和更多(有时候我的技能模糊不清)代码/逻辑。 但是这些gem会被很多其他开发者评论。

然后是“小gem”(意思是没有广泛使用和传播)。 这个gem用于低版本,beta状态等。

我的经验法则是:我相信第一组并从第二组gem中读取所有可用的代码。

这并不完全正确,因为我没有时间阅读系统中每个gem的代码,但每当我需要理解一个方法调用或者某个函数如何实现时,我都会尝试去源代码,驱使我,几乎总是阅读至少2-3个源文件。

如果我要为某个function安装某个function,我会用它来搜索github并查看实现,分支和开发人员的数量,活动(提交的数量和频率)等等。

也就是说,我用来信任gem,因为我从来没有发现任何故意有害的,但是糟糕的实施和一些安全漏洞。

有人建议对gem进行加密签名,因此你至少知道作者的代码没有被篡改过,但是对此并没有采用

http://pablotron.org/files/signing_gems.txt