Уязвимость приложения из-за неслучайных хеш-функций

Ниже приводится отрывок из статьи , в которой объясняется возможность атаки типа «отказ в обслуживании» (DoS) из-за неслучайных хэш-функций, используемых в структурах хеш-данных.

[…] условие может быть усилено за счет использования предсказуемых коллизий в базовых алгоритмах хеширования.

Чтобы проверить это, я просмотрел эталонную реализацию Java HashMap от Oracle и действительно обнаружил, что используются статические хэш-функции:

    static int hash(int h) {
       h ^= (h >>> 20) ^ (h >>> 12);
       return h ^ (h >>> 7) ^ (h >>> 4);
    }

В другой статье по этой теме говорится:

Tomcat 6.0. 32 сервер анализирует 2-мегабайтную строку конфликтующих ключей примерно за 44 минуты процессорного времени i7, поэтому злоумышленник со скоростью около 6 кбит / с может постоянно держать одно ядро ​​i7 занятый. Если злоумышленник имеет гигабитное соединение, он может занять около 100 000 ядер i7

. Как мы можем защититься от этой уязвимости. Более того, так много программного обеспечения, которое мы используем, с открытым исходным кодом (Tomcat и т. Д.), Которое полагается на эту реализацию.

33
задан Christopher Schultz 8 April 2019 в 14:08
поделиться