【问题标题】:Is Java byte code compiled in JDK 6 and runs on JDK7 open to vulnerability fixed in JDK 7?Java 字节码在 JDK 6 中编译并在 JDK7 上运行是否对 JDK 7 中修复的漏洞开放?
【发布时间】:2013-08-21 17:53:01
【问题描述】:

我的问题的动机很简单:不幸的是,Oracle 停止了 Java 6 的开发,并且不会提供任何额外的构建。 如果 Oracle 发现任何安全问题,他们只会在 Java 7 中修复它。 我们有使用 Java 6 开发的大型项目,但我没有资源将其转换为 Java 7。

所以,我想在 JDK 6 (6u45) 的最新版本中编译代码并在 JDK 7 的最新版本中运行它。

在这种情况下,我的字节码是否会对 JDK 7 中修复的漏洞开放?

添加

Oracle Java SE 重要补丁更新示例: http://www.oracle.com/technetwork/topics/security/javacpuapr2013-1928497.html

很遗憾,下一个安全补丁将不会应用于 JDK 6。

所以,更新后的问题是: 我应该使用最新的 JRE 7 运行我的代码而不重新编译我的 Java 6 字节代码吗? 还是应该使用最新的 JDK 重新编译我的代码并使用最新的 JRE 运行它?

【问题讨论】:

  • 除非我们知道漏洞是什么,否则我们无法回答这个问题。
  • 很有可能会在 JVM 级别修复,这意味着当您在 JVM7/JDK7 下运行字节码时会修复。但不可能对所有情况都下定论。
  • 该漏洞可能存在于 javac、JVM 或 JDK 类中。在某些情况下,它可能涉及使用(易受攻击的)API X 与((可能)无懈可击的)API Y,除非您更改源代码,否则您仍然容易受到攻击,或者根本无法运行。
  • 我没有看到任何新闻说“重新编译你的代码”——只是“将你的 JRE 更新到 X,因为版本 Y 是易受攻击的”。
  • @HotLicks 如果它在 JDK 类中,则不需要重新编译,因为 JVM 安装提供了这些。而且如果是在第三方库中,则不适用于这个问题,具体是关于Oracle 发现Java 中的问题。 javac 中的安全漏洞当然是可能的,但我不记得听说过。

标签: java security bytecode


【解决方案1】:

如果漏洞在虚拟机或API中,则使用Java 7运行时不会对漏洞开放。如果在编译器中,则可以通过使用Java 7编译来修复漏洞。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-18
    • 2017-08-03
    • 2012-08-26
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多