Wallarm Inc., ведущий разработчик решений безопасности веб-приложений на основе искусственного интеллекта, и Vulners.com, база данных по безопасности уязвимостей программного обеспечения в машиночитаемом формате, сегодня объявили о выпуске бесплатного инструмента оценки уязвимостей, который использует уникальную нейтральную нейронную сеть. алгоритм для автоматического прогнозирования серьезности уязвимости и ее потенциального негативного воздействия, обеспечивая оценку общей уязвимости (CVSSv2) для любой уязвимости за считанные секунды. Инструмент доступен через веб-интерфейс для бесплатного публичного использования: https://vulners.com/ai

Набор для обучения алгоритму основан на многолетнем опыте Валарма, защищающего сотни тысяч приложений и отслеживания трафика и статистики атак, а также обширной базы данных известных уязвимостей системы безопасности Vulners. Программное обеспечение для прогнозирования будущих уязвимостей было разработано исследовательской группой Валарма и имеет открытый исходный код. Валарм и Вулнерс создали бесплатный общедоступный веб-инструмент, который позволяет любому пользователю легко получить доступ к алгоритму нейронной сети и выполнить автоматический анализ уязвимостей. Средняя точность прогнозов составила 87%.

Этот инструмент позволяет специалистам по безопасности резко сократить окна уязвимостей нулевого дня, автоматически получая оценку серьезности, как только уязвимости обнаруживаются и становятся доступными описания. В отличие от этого, в национальную базу данных уязвимостей NIST требуется от одного до трех дней, чтобы включить в свой канал оцененные уязвимости. Инструмент также предоставляет независимые критерии оценки, чтобы команды могли сосредоточить свои ограниченные ресурсы на уязвимости, получившей высокие оценки как людьми, так и специалистами по ИИ.

Поставщики программного обеспечения и профессионалы в области безопасности, которые запускают программы вознаграждений или обнаруживают новые уязвимости, могут использовать этот инструмент для прогнозирования серьезности и определения приоритетов исправлений до того, как уязвимость станет общедоступной.

Команда Валарм проделала потрясающую работу. Вместе мы сделали огромный шаг на пути к анализу уязвимостей, как и должно быть. Всего с одним вычислительным узлом мы проанализировали 679 000 уязвимостей в нашей базе данных менее чем за один день. И результаты великолепны - используя базу данных Vulners с нейронной скоринговой сетью, вы можете получить оценку CVSS для абсолютно любой уязвимости. Больше не нужно гадать, «насколько вреден этот эксплойт». Начался последний отсчет для ручного заполнения CVSS и анализа уязвимости человека, - сказал Кир Ермаков, генеральный директор Vulners.

Под капотом прогноза риска CVSS

Обучающий набор.
Валарм экспортировал 121 Мб необработанного текста бюллетеней уязвимостей из базы данных vulners.com, классифицированных по кластерам CVSSv2 от 1.0 до 10.0 (всего 91 класс). Максимальное количество образцов в каждом классе до 1000. В итоге мы получили 37796 уникальных описаний уязвимостей. Общий словарный запас в этих данных составил около 850 тыс. Уникальных слов.

Нейронные сети.
Мы используем сверточную группу, состоящую из трех классических сверточных слоев с разным размером ядер, что позволяет распознавать слова и словосочетания.

for i, filter_size in enumerate(filter_sizes):
with tf.name_scope("conv-maxpool-%s" % filter_size):
# Convolution Layer
filter_shape = [filter_size, embedding_size, 1, num_filters]
W = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="W")
b = tf.Variable(tf.constant(0.1, shape=[num_filters]), name="b")
conv = tf.nn.conv2d(
self.embedded_chars_expanded,
W,
strides=[1, 1, 1, 1],
padding="VALID",
name="conv")
# Apply nonlinearity
self.h = tf.nn.relu(tf.nn.bias_add(conv, b), name="relu")

# Max-pooling over the outputs
P = tf.nn.max_pool(
self.h,
ksize=[1, max_pool_size, 1, 1],
strides=[1, max_pool_size, 1, 1],
padding='VALID',
name="pool")
pooled = tf.reshape(P, [-1, reduced, num_filters])
pooled_outputs.append(P)

Для создания этого классификатора мы использовали тензорный поток rnn_cell, чтобы иметь возможность предсказывать классы CVSSv2 не только по наборам слов, но и по контекстуальной осведомленности о словосочетаниях.

lstm_cell = tf.nn.rnn_cell.GRUCell(num_units=hidden_unit)
lstm_cell = tf.nn.rnn_cell.DropoutWrapper(lstm_cell, output_keep_prob=self.dropout_keep_prob)

В наши дни нейронные сети могут делать все, от распознавания изображений до прогнозирования эпидемий. Они также оказались бесценным инструментом для обеспечения информационной безопасности. Для этого проекта мы создали рекуррентную сеть свертки для прогнозирования оценки CVSSv2 для уязвимостей по текстовому описанию, и результаты превзошли все ожидания. «Теперь у исследователей безопасности есть бесплатный, мощный и надежный инструмент для оценки уязвимостей и прогнозирования воздействия», - сказал Иван Новиков, генеральный директор и соучредитель Wallarm.