阻止潜在的恶意R调用

aL3*_*3xa 8 r system code-injection

让我们假设你有R运行root/admin权限.除了system()和之外,你认为哪些R会有害file.*()

这是一个特定于平台的问题,我正在运行Linux,因此我对特定于Linux的安全漏洞感兴趣.我会理解你是否阻止关于R的讨论,因为这篇文章可以很容易地出现在"如何用R来搞乱系统?"

Ale*_*own 11

不要使用root privs运行R. 没有有效的方法以这种方式保护R,因为语言包括eval和reflection,这意味着即使你不想要我也可以构建对系统的调用.

更好的方法是以不影响系统或用户数据的方式运行R,无论它尝试做什么.

  • 关于`eval`的优点,你可以随意混淆内容.`eval(parse(text = paste(rev(c(")","whatever","(","m","e","t","s","y","s")) ,sep ="",collapse ="")))` (4认同)
  • @mbq:您可以删除`base`包,创建自己的版本,用搜索路径中更高的另一个函数覆盖它`eval < - function()print("hello")`等.有很多选项(没有一个是好的......). (3认同)

Sha*_*ane 8

凡是调用外部代码也可以使系统的变化,所以你需要阻止某些程序包之类的东西 .Call(),.C(),.jcall(),等.

可以说它最终将成为一项几乎不可能完成的任务,如果您需要root访问权限,最好在虚拟化环境中运行它等.


Jef*_*eff 5

你不能.您应该更改问题:"如何运行用户提供的R代码,以免损害用户或系统的其他用户?" 这实际上是一个非常有趣的问题,可以通过一点云计算,apparmor,chroot magic等解决.