Основной диск DataStax cassandra зависит от уязвимости Guava-19

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

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

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

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


person lambodar    schedule 14.03.2019    source источник
comment
Что вы подразумеваете под 0-day? Теоретически этот CVE не должен влиять на драйвер Java.   -  person Alex Ott    schedule 14.03.2019
comment
Понял, исправил! Спасибо. Но есть ли у нас какие-либо доступные обновления или сроки, и как вы говорите, что это не должно быть затронуто?   -  person lambodar    schedule 14.03.2019
comment
Я попросил команду разработчиков предоставить комментарий   -  person Alex Ott    schedule 14.03.2019


Ответы (2)


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

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

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

person Olivier Michallat    schedule 14.03.2019

У меня точно такая же проблема, и исправление состояло в том, чтобы игнорировать Guava из 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>
person Anil Kapoor    schedule 15.03.2019
comment
Какая у вас версия cassandra-driver-core? - person Phanindra Gopishetty; 10.11.2020