【问题标题】:DataStax cassandra core drive dependents on vulnerable Guava-19DataStax cassandra 核心驱动依赖于易受攻击的 Guava-19
【发布时间】:2019-08-04 22:58:18
【问题描述】:

DataStax cassandra core java 驱动器对具有安全漏洞 (CVE-2018-10237) 的 guava-19(包括最新的 DataStax)具有传递依赖。

为了解决这个问题,当我尝试从 DataStax 驱动器中排除 guava-19.0 依赖项并替换为 guava-27.1-jre 时,我在运行时遇到以下错误,并通过反编译最新的 guava 驱动程序确认相同;从 guava-20.0 看起来他们删除了 FutureFallback 类,并且与最新的 cassandra 驱动器没有向后兼容性。

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

任何帮助或快速修复或替代方法都非常值得赞赏。

【问题讨论】:

  • 0-day 是什么意思?理论上,Java 驱动程序不应受此 CVE 影响。
  • 知道了,更正了!谢谢。但是我们是否有任何可用的更新或时间表?你怎么说“不应该受到影响”?
  • 我已经要求开发团队提供意见

标签: security cassandra datastax datastax-enterprise datastax-java-driver


【解决方案1】:

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

我们在JAVA-1328 中解决了番石榴兼容性问题。该驱动程序与 16.0.1 到最新版本兼容,有一个内部兼容层来解决 19 中的重大更改。我刚刚尝试了一个简单的客户端,它覆盖了对 27.1-jre 的依赖,一切正常。

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

【讨论】:

    【解决方案2】:

    我完全有同样的问题&修复是从 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>
    

    【讨论】:

    • 你的 cassandra-driver-core 版本是多少?
    猜你喜欢
    • 2020-02-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2018-06-24
    • 1970-01-01
    • 2018-11-17
    • 2016-04-18
    相关资源
    最近更新 更多