【问题标题】:What information can a root user access within a running JVM? [closed]root 用户可以在运行的 JVM 中访问哪些信息? [关闭]
【发布时间】:2013-06-29 23:28:33
【问题描述】:

如果使用正确的代码,编写安全的 Java 程序(除非针对特定的利用)不会离开沙箱或做潜在危险的事情相对来说是微不足道的。

但是,我的问题与此相反。 root 用户对 JVM 中的信息有什么样的访问权限?我是否可以采取任何保护措施来限制或删除 root 用户可以查看/修改的内容?最后,有没有人知道有什么好的资源可以让自己符合这个规范?对谷歌来说,这似乎是一个非常困难的话题......

【问题讨论】:

  • 简单回答:你无法阻止这一点。 root 可以做任何事情(只要您不采取 SELinux 之类的对策)。这与 Java 无关。
  • SELinux 不值得,工作太麻烦了。除非你在金融机构并且你在安全部门。

标签: java security permissions root


【解决方案1】:

这个问题让我想起有人问“有没有办法在我的配置文件中加密用户名和密码?”。

关键是,如果用户已经对您的服务器具有 root 访问权限,那么您需要担心的事情比他们查询正在运行的 JVM 更重要。

例如,假设您的应用程序有一个 hibernate.cfg.xml,他们可以快速查看您的数据库的凭据。如果他们是恶意的,当他们拥有服务器访问权限时,他们可以做更糟糕的事情。

【讨论】:

  • 谢谢,我害怕听到这个答案。对我来说幸运的是,我并不担心有人可以访问我的服务器 - 只是有人可以访问我在他们的机器上执行的代码(允许在那里运行)。
  • 啊 - 这是一个不同的问题,如果你真的担心这个,你可以考虑混淆(记住这并不安全,它只是另一个级别的复杂性)。考虑secureteam.net/Java-Obfuscator-Features.aspx,但要确保它们不会改变你的代码流。
【解决方案2】:

root 可以做任何事情,但你不应该首先使用 root。大多数人使用 root 能够绑定到低于 1000 的端口,例如用于 http(s) 服务器的 80 或 443。

您可以解决这个问题,而不是以 root 身份运行您的 jvm。

【讨论】:

    【解决方案3】:

    对我来说幸运的是,我并不担心有人可以访问我的服务器 - 只是有人可以访问我在他们的机器上执行的代码(允许在那里运行)

    如果他们控制系统(例如,他们具有 root 访问权限),他们可以读取您的 JVM 的地址空间,并且(考虑到时间和技能)恢复嵌入在您的代码或数据中的任何信息/秘密。

    没有真正有效的解决方案。 (混淆之类的东西对于熟练的黑客来说只是“减速带”。)如果你不能信任拥有 root 访问权限的人,你就不应该在他们的机器上运行包含机密的代码。

    【讨论】:

      猜你喜欢
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多