DataStax cassandra 核心驱动依赖易受攻击的 Guava-19

DataStax cassandra core drive dependents on vulnerable Guava-19

DataStax cassandra core java drive is having a transitive dependencies on guava-19 (including latest DataStax) which is having a security vulnerable (CVE-2018-10237)。

为了解决这个问题,当我尝试排除 guava-19.0 dependencies from DataStax drive and replaced with guava-27.1-jre 时,我在 运行 时遇到了以下错误,并通过反编译最新的番石榴驱动程序确认了这一点;看起来他们从 guava-20.0 中删除了 FutureFallback class 并且与最新的 cassandra 驱动器没有向后兼容性。

java.lang.NoClassDefFoundError: com/google/common/util/concurrent/FutureFallback

非常感谢任何帮助或快速修复或替代方案。

该漏洞涉及 Guava 类 AtomicDoubleArrayCompoundOrdering;我们不在驱动程序中使用它们。

我们在 JAVA-1328 中解决了 Guava 兼容性问题。该驱动程序兼容 16.0.1 到最新版本,有一个内部兼容层来解决 19 中的重大变化。我刚刚尝试了一个简单的客户端,它覆盖了对 27.1-jre 的依赖,一切按预期工作。

你是如何测试的,错误的堆栈跟踪是什么?

我完全有同样的问题 & 修复是从 3 个地方忽略 Guava,而不仅仅是从驱动程序。以下是您的修复示例。它对我有用,我现在正在使用 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>