Способ обнаружения аномального исполнения системы исполнения программируемого логического контроллера

Иллюстрации

Показать все

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

Реферат

Область техники

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

Уровень техники

Атаки на автоматизированные системы управления (сокр. АСУ) уже давно не редкость. Атакам подвергаются почти все элементы АСУ, не являются исключением и программируемые логические контроллеры (ГОСТ Р МЭК 61131-1-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 1. Общая информация (утв. и введен в действие Приказом Росстандарта от 13.05.2016 N314-ст)) (сокр. ПЛК, англ. PLC). ПЛК содержат множество уязвимостей (http://www.alphaguardian.net/category/plc-cyber-vulnerabilities/), которые могут быть использованы для атаки на АСУ. Одной из таких уязвимостей является использование систем исполнения ПЛК (напр., CodeSYS RTE), представляющих из себя монолитную или многокомпонентную программу, исполняющуюся в одном виртуальном адресном пространстве на операционной системе, под управлением которой работает ПЛК. Таким образом если будет скомпрометирован хотя бы один функциональный компонент (ГОСТ Р МЭК 61131-1-2016. - С. 2), поддерживаемый системой исполнения ПЛК, например осуществляющий взаимодействие с устройствами ввода, скомпрометирована будет вся система исполнения ПЛК.

Техническая проблема заключается в невозможности обнаружить аномалию внутри системы исполнения ПЛК в виду ее монолитности.

В уровне технике отсутствуют решения, позволяющие решить указанную проблему кардинально. Используются различные сканеры уязвимостей и фильтры. Примером подобного решения приведен в статье "Protecting Industrial Control Systems with Cisco IPS Industrial Signatures" (http://www.cisco.com/c/en/us/about/security-center/protecting-industrial-control-systems-networks-ips.html) Ho если фильтр пропустил какое-то взаимодействие и передал его системе исполнения ПЛК, то выявить аномалию становится практически невозможно ввиду закрытости самой системы исполнения, фактически для систем безопасности система исполнения ПЛК представляет из себя "черный ящик".

Также в настоящее время возможны два полюсных варианта решения указанной проблемы, в первом случае дизайн ПЛК разрабатывается таким образом, чтобы выполнять строго детерминированную задачу, что в принципе исключает какую-либо гибкость (способность переходить с одного вида продукции на другой с минимальными затратами времени и труда) и в использовании систем исполнения в их классическом понимании, нет необходимости. Либо используются ПЛК совместно с системами исполнения, что придает ПЛК максимальную гибкость, но при этом полностью игнорируется вопрос информационной безопасности (англ. information security), хотя выполнению требований по функциональной безопасности (англ. functional safety) уделяется очень пристальное внимание ввиду их нормативной регламентации (Стандарт IEC 61508 - Функциональная безопасность электрических, электронных, программируемых электронных систем, связанных с безопасностью).

Раскрытие изобретения

Настоящее изобретение предназначено для обнаружения аномалии в исполнении системы исполнения ПЛК на программируемом логическом контроллере.

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

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

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

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

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

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

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

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

В другом частном случае изолируют модули путем виртуализации, а модуль безопасности устанавливается на гипервизор. В частном случае для виртуализации используют технологию PikeOS.

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

Краткое описание чертежей

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

Фиг. 1 изображает примеры систем исполнения ПЛК и систем программирования и отладки;

Фиг. 2 изображает осуществление настоящего изобретения;

Фиг. 3 изображает варианты разделения системы исполнения ПЛК на модули;

Фиг. 4 изображает варианты изоляции модулей системы исполнения ПЛК;

Фиг. 5 изображает варианты установки модуля безопасности на ПЛК;

Фиг. 6 изображает пример компьютерной системы общего назначения, с помощью которой может быть реализовано настоящее изобретение.

Осуществление изобретения

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

Программируемый логический контроллер - электронная составляющая промышленного контроллера, специализированного (компьютеризированного) устройства, используемого для автоматизации технологических процессов. Система исполнения (англ. execution runtime, runtime environment) - программное и/или аппаратное окружение необходимое для выполнения компьютерной программы и доступное во время выполнения компьютерной программы. Известна также как система выполнения, среда выполнения, среда исполнения, исполнительная система.

Система исполнения программируемого логического контроллера (Петров И.В. «Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования» - М.: Солон-Пресс, 2010 - С. 48) (англ. control runtime system) - программное окружение, установленное на ПЛК, необходимое для выполнения управляющей (прикладной) программы и доступное во время выполнения управляющей программе. Обеспечивает загрузку, исполнение прикладной программы ПЛК и функции отладки. Устанавливается в контроллер в процессе его изготовления. Является монолитной программой (однокомпонентной) или программный комплекс (состоит из нескольких компонентов). В случае монолитной программы все функционально законченные фрагменты кода (под кодом здесь и далее понимается программный код в различных его формах: объектного кода, байт кода (промежуточный код), исполняемого кода, машинного кода) и данных программы, отвечающие за сетевой обмен, доступ к устройствам ввода вывода и иные функции размещены в рамках одного компонента, в другом случае разносятся по нескольким компонентам (напр., библиотекам). Примеры указанных систем: исполнительная система MasterPLC (http://www.insat.ru/products/?category=395), система исполнения CodeSys Runtime (https://www.codesys.com/products/codesys-runtime.html). На Фиг. 1 изображен вариант организации системы исполнения ПЛК. Функционально законченные фрагменты кода и данных, реализующие функции сетевого обмена, доступа к устройствам ввода вывода и иные функции, размещенные в рамках одной программы далее будут обозначаться абстрактно Функции А, Функции В, Функции С, где, например, под «Функцией А» понимается функционально законченный фрагменты кода и данных, отвечающие за реализацию «Функции А». Функциональный компонент следует отличать от программного компонента. Функциональный компонент является элементом функциональной структуры, а программный компонент элемент программного комплекса.

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

Совокупность взаимосвязанных компонентов (модулей), из которых иерархически строится система исполнения, реализует функциональную структуру ("ГОСТ Р МЭК 61131-1-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 1. Общая информация" (утв. и введен в действие Приказом Росстандарта от 13.05.2016 N 314-ст), - С. 3) (функции, выполняемые системой исполнения). Порядок и формат взаимодействия взаимосвязанных компонентов определяются функциональной логикой. В частном случае, реализованная функциональная структура и функциональная логика (способ взаимодействия элементов функциональной структуры), являются реализованной в коде среды выполнения бизнес-логикой. Способ взаимодействия в частном случае определяет порядок и формат взаимодействия элементов.

Бизнес-логика системы исполнения - реализованная в коде классов, методов, процедур, функций среды выполнения совокупность правил, принципов, зависимостей поведения объектов в предметной области. Элемент бизнес-логики среды выполнения функционально законченный набор инструкций, классов, методов, процедур, функций. Совокупность элементов образуют функциональную структуру системы исполнения или ее часть.

Бизнес-логика системы исполнения ПЛК - реализованная в коде классов, методов, процедур, функций среды выполнения совокупность правил, принципов, зависимостей поведения объектов в автоматизируемом технологическом процессе. Например, порядок сетевого обмена, доступ к устройствам ввода вывода, взаимодействие с ОС ПЛК.

Система программирования и отладки программ ("ГОСТ Р МЭК 61131-1-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 1. Общая информация" (утв. и введен в действие Приказом Росстандарта от 13.05.2016 N 314-ст), - С. 2) (сокр. СПиО) связана с системой исполнения ПЛК. Именно посредством данной системы прикладная программа загружается в память ПЛК и передается под управление системе исполнения ПЛК. Пример СПиО изображен на Фиг. 1. В частном случае данная система может использоваться для управления системой исполнения ПЛК изменения ее конфигурации и установки дополнительных модулей на ПЛК.

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

повысить безопасность компьютерных систем, на которых перечисленные объекты функционируют (исполняются); и

обеспечить контроль взаимодействия элементов этих объектов.

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

- других систем исполнения, их частей и отдельных компонентов (модулей);

- монолитных программ и их частей;

- многокомпонентных программ, исполняющихся в одном адресном пространстве и отдельных компонентов (модулей) этих программ.

Осуществление данного изобретения изображено на Фиг. 2. На первом этапе 200 реализации способа получают систему исполнения ПЛК. Система исполнения ПЛК либо извлекается из ПЛК, либо систему исполнения ПЛК получают перед установкой на ПЛК. В другом частном случае способ реализуют с первого этапа непосредственно на ПЛК.

Далее на этапе 210 разделяют код и данные системы исполнения ПЛК на отдельные модули код и данные разделяются на основании функциональной структуры (ГОСТ МЭК 61131-1) системы исполнения ПЛК. При таком разделении выделяют в по меньшей мере один модуль функционально законченный фрагмент кода и данных системы исполнения ПЛК, остальной код и данные системы исполнения ПЛК выделяют в другой модуль. На Фиг. 3а изображен пример такого разделения, где фрагмент кода и данных, предназначенный для выполнения «функций А», выделяется в «модуль 1», фрагмент кода и данных, предназначенный для выполнения «функций В», выделяется в «модуль 2», фрагмент кода и данных, предназначенный для выполнения «других функций», оставшихся, выделяется в «модуль 3».

Также код и данные системы ПЛК разделяют на основании угроз безопасности (ГОСТ Р 56546-2015) для системы исполнения ПЛК. При таком разделении выделяют в по меньшей мере один модуль фрагмент кода и данных системы исполнения, содержащий уязвимость (ГОСТ Р 56546-2015) (или уязвимый фрагмент кода, например, фрагмент, отвечающий за сетевое взаимодействие, именно он, как правило, подвергается атаке в первую очередь), используемую для реализации угроз, остальную часть кода и данных системы исполнения выделяют в другой модуль. На Фиг. 3б показано такое разделения, например фрагменты кода и данных, предназначенные для выполнения функций А, В, С, содержат уязвимости, фрагмент кода и данных, предназначенный для выполнения «функций А», выделяется в «модуль 1», фрагменты кода и данных, предназначенные для выполнения «функций В» и «функций С», выделяются в «модуль 2», фрагменты кода и данных, предназначенные для выполнения «других функций», оставшихся, и не содержащие уязвимости, выделяются в «модуль 3».

Разделение может осуществляться и на основании критичности фрагментов кода и данных системы исполнения, где выделяют в по меньшей мере один модуль фрагмент кода и данных системы исполнения ПЛК, который управляет критическим объектом (ГОСТ Р 53114-2008. Национальный стандарт Российской Федерации. Защита информации. Обеспечение информационной безопасности в организации. Основные термины и определения" (утв. и введен в действие Приказом Ростехрегулирования от 18.12.2008 N 532-ст), с. 6) (критический фрагмент кода и данных), остальной код и данные системы исполнения ПЛК выделяют в другой модуль. На Фиг. 3в изображен пример такого разделения, где фрагмент кода и данных, предназначенный для выполнения «функций А», является критическим кодом и содержит критические данные, данный фрагмент выделяется в модуль 1, фрагменты кода и данных, предназначенные для выполнения «функций В», «функций С», «других функций», оставшихся, выделяются в «модуль 2».

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

На Фиг. 3б и Фиг. 3в показаны примеры, где в модули выделяются функционально законченные фрагменты кода и данных, содержащие уязвимости или используемые для управление критическими объектами, в общем случае при разделении на основании критичности и угроз безопасности в модуль выделять функционально законченные фрагменты необязательно, выделятся могут любые критические фрагменты, или фрагменты содержащие уязвимости, примеры представлен для простоты восприятия.

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

На этапе 220 изолируют созданные ранее модули друг от друга, от операционной системы и оборудования. Для изоляции используют технологии виртуализации с применением контейнеров или виртуальных машин (ГОСТ Р 56938-2016 Защита информации. Защита информации при использовании технологий виртуализации. Общие положения). При использовании контейнеров (см. Фиг. 4а), модуль помещают в контейнер, а в операционную систему устанавливается управляющая служба, через которую модули взаимодействуют между собой и с операционной системой, примерами таких служб являются службы Docker (англ. Docker engine). При использовании виртуальных машин, модули помещаются в виртуальные машины с различными вариантами мониторов виртуальных машин, которыми являются:

- гипервизоры I типа (см. Фиг. 4б), например VMware ESX;

- гипервизоры II типа (см. Фиг. 4в), Microsoft Virtual PC, VM Workstation, QEMU, Parallels, VirtualBox;

- гибридные гипервизоры (см. Фиг. 4г), Xen, Citrix XenServer, Microsoft Hyper-V.

Отдельно стоит отметить, что для изоляции в частном случае могут использоваться: партиции (англ. partition) PikeOS (PikeOS - микроядерная операционная система реального времени, которая производится компанией SYSGO AG). Она ориентирована на безопасности критически важных встраиваемых систем. Она обеспечивает разделенную среду для нескольких операционных систем с различными целями проектирования и требованиями безопасности (оф. сайт https://www.sysgo.com/products/pikeos-hypervisor/)) контейнеризация средствами Linux (англ. Linux Containers, сокр. LXC). В частном случае не все модули могут изолироваться, и их взаимодействие с операционной системой и другими модулями остается неизменным, данный факт отображен на примере модуля N на фигурах, для которого изоляция опциональна.

На этапе 230 устанавливают на ПЛК модуль безопасности, в частном случае модуль содержит функционально законченные наборы фрагментов кода и данных, отвечающие за реализацию функций безопасности (о том, как эти функции осуществляются будет описано ниже). Уровень архитектуры ПЛК на котором будет функционировать модуль безопасности будет определяться технологией, которая использовалась для изоляции модулей системы исполнения ПЛК. Например, если для изоляции использовались контейнеры (Фиг. 4а) и в ОС ПЛК установлена управляющая служба (напр., Docker), то модуль безопасности располагается на том же уровне, что и контейнеры (см. Фиг. 5а). Если для изоляции используются виртуальные машины (см. Фиг. 4б, Фиг. 4в, Фиг. 4г), то модуль безопасности устанавливается на уровне монитора виртуальных машин (гипервизора) или встраивается в него (см. Фиг. 5б, Фиг. 5в). На том же этапе модифицируют интерфейс обмена данными изолированных модулей, предназначенный для взаимодействия с другими модулями и с ресурсами операционной системы в условиях изоляции таким образом, чтобы указанное взаимодействие в условиях изоляции модулей осуществлялся только через установленный модуль безопасности, а формат данных, которыми обмениваются, соответствовал формату, определенному модулем безопасности.

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

Модуль безопасности осуществляет мониторинг взаимодействия, где взаимодействие проверяется на соответствие правилу, если взаимодействие соответствует правилу, то взаимодействие пропускается и данные отправляются приемнику, если взаимодействие не соответствует правилу осуществляется корректировка взаимодействия (в данные, которыми обменивается приемник и источник, через модуль безопасности вносятся изменения) или взаимодействие не допускается (взаимодействие останавливается). Что должен сделать модуль безопасности при несоответствии взаимодействия правилу, описывающему подобное взаимодействие, определяется либо самим правилом, либо субсидиарным правилом, если правилом для осуществляемого взаимодействия модуль не располагает (диспозитивное регулирование). Например, допустимое взаимодействие (см. Фиг. 5б) «модуля 1» с «модулем 2», где «модуль 1» является источником, а «модуль 2» приемником, описывается основным «правилом А» и факультативным «правилом Б», также модуль безопасности содержит субсидиарное «правило X», которое необходимо применить в случае, когда ни одно другое правило никаких предписаний на возникшее взаимодействие не содержит. При контроле указанного взаимодействия модуль безопасности обнаружил, что взаимодействие «модуля 1» с «модулем 2» не соответствует «правилу А». «Правило А» на данный случай предписывает проверить взаимодействие на соответствие «правилу Б». Модуль безопасности поэтому проверяет взаимодействие на соответствие «правилу Б», модуль обнаруживает, что взаимодействие не соответствует и «правилу Б», но на этот случай «правило Б» ничего не предписывает, поэтому модуль безопасности применяет некоторое «правило X», которое, например, предписывает остановить взаимодействие.

Настоящее изобретение в частном случае осуществляется посредством СПиО, элементы которой могут быть исполнены на процессоре компьютера общего назначения (например, который изображен на Фиг. 6).

Данное изобретение можно также использовать для обнаружения аномалий при исполнении системы исполнения ПЛК. При обнаружении аномалий изолировать модули необязательно, и изоляция может использоваться в частном случае способами, описанными выше. После разделения на модули устанавливают на ПЛК модуль безопасности и модифицируют интерфейс обмена данными модулей, предназначенный для взаимодействия модулей между собой и с ресурсами операционной системы таким образом, чтобы указанное взаимодействие осуществлялось только через установленный модуль безопасности, а формат данных, которыми обмениваются, соответствовал формату, определенному модулем безопасности. Таким образом структура сообщений которыми обмениваются полностью или частично известна модулю безопасности, данная структура (формат данных, иногда также называется интерфейсом) описывается, например, с помощью Intreface Definition Language (IDL) и модуль безопасности в результате способен проверять, что передаваемое сообщение соответствует этому описанию, а также может использовать отдельные поля этого сообщения для целей контроля допустимости.

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

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

Фиг. 6 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.

Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.

Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш-карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.

Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.

Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 6. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.

Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.

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

1. Способ обнаружения аномалии в исполнении системы исполнения ПЛК, в котором:

а) разделяют код и данные системы исполнения ПЛК или часть системы на отдельные программные модули, при этом на программные модули разделяют на основании:

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

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

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

б) устанавливают на ПЛК модуль безопасности;

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

г) осуществляют мониторинг взаимодействия модулей системы исполнения ПЛК между собой и с ресурсами операционной системы путем проверки модулем безопасности по меньшей мере одного взаимодействия на соответствие правилам, установленным для данного взаимодействия;

д) обнаруживают аномалии в исполнении системы исполнения ПЛК на основании обнаруженного модулем безопасности несоответствия взаимодействия, мониторинг которого осуществляется, установленному для данного взаимодействия правилу.

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

3. Способ по п. 2, в котором изолируют модуль путем контейнеризации.

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

5. Способ по п. 3, в котором для изоляции используют технологию контейнеризации Linux.

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

7. Способ по п. 2, в котором изолируют модули путем виртуализации.

8. Способ по п. 7, в котором для изоляции используют технологию виртуализации PikeOS.

9. Способ по п. 7, в котором модуль безопасности устанавливается на гипервизор.

10. Способ по п. 1, где при модификации интерфейса обмена данными меняется порядок и протокол обмена данными.

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

12. Способ по п. 1, в кото