Безопасность ПЛК: 4,5) Используйте переменные-флаги, хеши и контрольные суммы для проверки целостности проекта

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

4) Используйте переменные-флаги для проверки целостности логики

Добавляйте счётчики для флагов ошибок.

Описание

Если ПЛК работал нормально, но внезапно делит на ноль, разберитесь, выясните причину. Большинство программистов объяснят проблему как математическую ошибку или, что еще хуже, могут предположить, что их код идеален, и позволят ПЛК войти в состояние жесткого отказа. Во время разработки кода инженерам необходимо тестировать и проверять свои программные модули, подставляя данные за пределами ожидаемых границ. Это принято называть unit тестами.

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

Пример

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

Типичные случаи:

  • деление на ноль;

  • переполнение счетчика;

  • отрицательная уставка счетчика или таймера;

  • переполнение регистров ввода/вывода.

Безопасность

Атаки на ПЛК могут включать изменение логики, активацию новой программы, тестирование нового кода, загрузку нового рецепта процесса, вставку вспомогательной логики для отправки сообщений или активации какой-либо функции. Поскольку большинство ПЛК не обеспечивают проверку криптографической целостности, флаги могут быть хорошими индикаторами, если произойдет одно из вышеуказанных изменений.

Надёжность

Серьезное отношение к флагам может предотвратить работу ПЛК с программными ошибками и ошибками ввода/вывода. Кроме того, если возникает ошибка, источник сбоя более очевиден.

5) Используйте криптографические методы или контрольную сумму для проверки целостности кода

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

Описание

А) Контрольные суммы
Там, где (криптографические) хеши невозможны, можно использовать контрольные суммы. Некоторые ПЛК генерируют уникальные контрольные суммы при загрузке кода в ПЛК. Контрольная сумма должна быть задокументирована производителем/интегратором после SAT(On Site Acceptance Test) и являться частью гарантийных или сервисных условий.

Если функция контрольной суммы изначально не доступна в контроллере, ее также можно сгенерировать с помощью сторонних инструментов, и например, один раз в день использовать для сравнения с хешем исходного кода в ПЛК, чтобы убедиться, что они совпадают. Хотя это не будет предоставлять оповещения в реальном времени, этого достаточно, чтобы узнать, что кто-то изменил код ПЛК.

Значение контрольной суммы также можно переместить в регистр ПЛК и настроить для выдачи аварийного сигнала, когда он изменится.

Б) Хеши
ЦП ПЛК обычно не имеют вычислительной мощности для генерации или проверки хэшей во время работы.

Попытка хеширования может привести к сбою ПЛК. Но специальное программное обеспечение для работы ПЛК может иметь возможность вычислять хэши из кода ПЛК и сохранять их либо в ПЛК, либо где-то еще в системе управления.

Пример

Поставщики ПЛК, которые, имеют функции контрольной суммы:

  • Siemens (см. пример)

  • Rockwell

Внешнее программное обеспечение может использоваться для генерации контрольных сумм:

  • Version dog

  • Asset Guardian

  • PAS

Безопасность

Важно знать об изменениях кода ПЛК, и связанных с этим рисках, чтобы проверять проект на безопасность работы ПЛК после изменений.

Надёжность

Хэши или контрольные суммы также могут быть средством проверки того, что в ПЛК находится код утвержденный поставщиком.

От себя

Хорошая статья про контрольную сумму

Кратко, что такое хеширование

Приглашаю всех в telegram чат и telegram канал для специалистов в области промышленной автоматизации. Здесь можно напрямую задать очень узкоспециализированный вопрос и даже получить ответ.

Жду ваше мнение и опыт относительно данного пункта в комментариях. Всего будет 20 пунктов из "Top 20 Secure PLC Coding Practices", надеюсь на каждый получить как можно больше комментариев, чтобы составить свой список рекомендаций по программированию для ПЛК.

Безопасность ПЛК: 3) Вся логика процесса по возможности должна быть в ПЛК

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Каким образом вы отслеживаете целостность проекта?
25% Использую встроенные в среду разработки интсрументы 1
0% Генерирую и сохраняю хеши 0
50% Вычисляю и сохраняю контрольные суммы 2
25% Не слежу за целостностью, но теперь буду 1
0% Не слежу за целостностью, и не буду 0
Проголосовали 4 пользователя. Воздержавшихся нет.
Источник: https://habr.com/ru/post/581614/


Интересные статьи

Интересные статьи

Добрый день, уважаемый читатель! Вот и подошел к концу наш блиц-курс по анализу целостности сигналов в PADS Professional. В заключительном уроке вы вы узнаете, как выполнить пакетны...
Если бы был способ заранее узнать, как новые технологии будут взаимодействовать между собой и как будет влиять на них деятельность киберпреступников, стал бы наш мир безопаснее? Кибер...
В этом посте я собрал чеклист, на который я постоянно ссылаюсь, работая над комплексным проектом по машинному обучению. Зачем мне вообще нужен чеклист? Поскольку вам необход...
Лирическое отступление По моему мнению, в сегодняшней России наибольшие шансы на успех в области технологических стартапов имеют два типа проектов: узконишевые в области промышленной авто...
Сегодня мы поговорим о перспективах становления Битрикс-разработчика и об этапах этого пути. Статья не претендует на абсолютную истину, но даёт жизненные ориентиры.