Ядро диска DataStax Cassandra зависит от уязвимого Guava-19 - PullRequest
6 голосов
/ 14 марта 2019

Ядро DataStax cassandra Диск Java имеет транзитивные зависимости от guava-19 (включая последний DataStax), который уязвим с точки зрения безопасности ( CVE-2018-10237 ).

Чтобы исправить это, когда я попытался исключить guava-19.0 зависимостей с диска DataStax и заменить на guava-27.1-jre Я получил следующую ошибку во время выполнения и подтвердилто же самое, декомпилируя последний драйвер гуавы;похоже, что из guava-20.0 они убрали класс FutureFallback и обратной совместимости с последними накопителями кассандры нет.

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

Любая помощь, быстрое исправление или альтернатива очень важны.

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Уязвимость относится к классам гуавы AtomicDoubleArray и CompoundOrdering;мы не используем их в драйвере.

Мы рассмотрели проблемы совместимости с гуавой в JAVA-1328 .Драйвер совместим с 16.0.1 до последней версии, есть внутренний уровень совместимости для исправления критических изменений в 19. Я только что попробовал простой клиент, который переопределяет зависимость до 27.1-jre, все работает как положено.

Как вы тестировали и какова была трассировка стека вашей ошибки?

1 голос
/ 15 марта 2019

У меня точно такая же проблема, и было исправлено игнорирование Гуавы из 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>
...