DataStax cassandra core java驱动器对guava-19(包括最新的DataStax)具有传递依赖性,该安全漏洞具有安全性(CVE-2018-10237)。
为了解决这个问题,当我尝试从DataStax驱动器中排除guava-19.0依赖项并替换为guava-27.1-jre时,我在运行时遇到了以下错误,并通过反编译最新的番石榴驱动程序确认了相同的错误;从guava-20.0看起来他们删除了FutureFallback类,并且没有向后兼容最新的cassandra驱动器。
java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallback
任何帮助或快速修复或替代是非常值得注意的。
该漏洞涉及番石榴类AtomicDoubleArray
和CompoundOrdering
;我们不在驱动程序中使用它们。
我们已经解决了JAVA-1328中的番石榴兼容性问题。驱动程序与16.0.1最新兼容,有一个内部兼容层来解决19中的重大变化。我刚刚尝试了一个简单的客户端,它将依赖性覆盖到27.1-jre,事情按预期工作。
你是如何测试的,你错误的堆栈跟踪是什么?
我确实有同样的问题和解决方法是从3个地方忽略番石榴,不仅仅是来自司机。以下是您的修复示例。它对我有用,我现在正在使用Guava 27。
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>${datastax.version}</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
<version>${datastax.version}</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-extras</artifactId>
<version>${datastax.version}</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
之后你可以使用自己的番石榴,如下所示:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>