28 января 2021

Криптографические смертные грехи в защите ПЛК Modicon M100/M200/M221

Опубликована информация об уязвимостях различной степени критичности (от 3.1 до 7.1) в программируемых логических контроллерах Modicon M100/M200/M221 производства Schneider Electric. Уязвимости связаны с недостатками реализации криптографических функций защиты данных.

Уведомление от 12 января указывает на действительность информации об уязвимостях ПЛК Modicon линейки M221, о которых писали Claroty и Trustwave в ноябре 2020 года, для линеек M100 и M200.

Уязвимости содержатся в проприетарном механизме защиты данных, передаваемых по Modbus (502/tcp). В частности, уязвим недавно спроектированный механизм установки пароля для взаимодействия контроллера и ПО на компьютере инженера.

Исследователи достаточно нейтрально упоминают о «некоторых недостатках» в реализации аутентификации и шифрования данных. Фактически речь идет о криптографических «смертных грехах»:

  • использовании сверхкоротких (всего 4 байта) ключей и секретов,
  • использовании текущего времени в качестве входных данных для генерации псевдослучайных чисел,
  • модификации известных криптоалгоритмов или использовании собственных алгоритмов,
  • шифровании паролей и данных при помощи XOR,
  • смешивании шифрованных и нешифрованных данных.

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

Уязвимый алгоритм разделения секрета исследователи Claroty идентифицируют как алгоритм Диффи-Хеллмана, а исследователи Trustwave — как безымянную совместно реализуемую «функцию генерации ключа» (и приводят ее псевдокод, отличный от реализации Диффи-Хеллмана). В любом случае речь идет о взаимном обмене псевдослучайными значениями длиной по 4 байта. В определенных случаях, упоминаемых Trustwave, пространство перебора для раскрытия ключа сокращается всего до двух байтов.

Шифрование на ключе длиной 4 байта при помощи XOR позволяет избежать и этого перебора. Если в трафике достаточно много повторяющихся известных последовательностей или достаточно много четырехбайтовых нулей, то ключ может быть восстановлен «на глаз». Атака на основе значений заполнения (padding oracle) основана на вычленении и анализе шифрованных последовательностей, созданных на основе одного и того же открытого текста. В данном случае достаточно поискать одинаковые четырехбайтовые последовательности по телу пакета — с большой вероятностью они буду представлять собой сам ключ, для которого выполнена операция XOR 0x00000000. Если таким образом ключ не удалось выявить, то можно проанализировать другие предсказуемые значения поля данных в пакете. Смешивание нешифрованных и шифрованных данных способствует такому анализу.

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

Дата публикации информации об уязвимостях: 10 ноября 2020, обновление от 12 января 2021

Источник: Schneider Electric, Claroty, Trustwave

Авторы
  • Руководитель группы аналитиков по информационной безопасности, Kaspersky ICS CERT