RU2638000C1 - Способ контроля системы исполнения программируемого логического контроллера - Google Patents

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

Info

Publication number
RU2638000C1
RU2638000C1 RU2017104131A RU2017104131A RU2638000C1 RU 2638000 C1 RU2638000 C1 RU 2638000C1 RU 2017104131 A RU2017104131 A RU 2017104131A RU 2017104131 A RU2017104131 A RU 2017104131A RU 2638000 C1 RU2638000 C1 RU 2638000C1
Authority
RU
Russia
Prior art keywords
execution system
plc
module
data
modules
Prior art date
Application number
RU2017104131A
Other languages
English (en)
Inventor
Павел Владимирович Дякин
Дмитрий Александрович Кулагин
Original Assignee
Акционерное общество "Лаборатория Касперского"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Акционерное общество "Лаборатория Касперского" filed Critical Акционерное общество "Лаборатория Касперского"
Priority to RU2017104131A priority Critical patent/RU2638000C1/ru
Priority to US15/715,258 priority patent/US10599120B2/en
Priority to JP2017198987A priority patent/JP6903544B2/ja
Priority to EP17196462.0A priority patent/EP3361332B1/en
Priority to CN201710998035.2A priority patent/CN108399330B/zh
Application granted granted Critical
Publication of RU2638000C1 publication Critical patent/RU2638000C1/ru
Priority to US16/799,313 priority patent/US11029662B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/058Safety, monitoring
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/406Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by monitoring or safety
    • G05B19/4063Monitoring general control system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13142Debugging, tracing
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15115Pc serves as plc, programming panel, monitoring panel

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Automation & Control Theory (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Programmable Controllers (AREA)

Abstract

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

Description

Область техники
Настоящее изобретение относится к способам контроля функционирования программируемых логических контроллеров и связанных с ним периферийных устройств, предназначенных для контроля и управления машинами и производственными процессами.
Уровень техники
Атаки на автоматизированные системы управления (сокр. АСУ) уже давно не редкость. Атакам подвергаются почти все элементы АСУ, не являются исключением и программируемые логические контроллеры1 (1 ГОСТ Р МЭК 61131-1-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 1. Общая информация'' (утв. и введен в действие Приказом Росстандарта от 13.05.2016 N314-ст) (сокр. ПЛК, англ. PLC). ПЛК содержат множество уязвимостей2, (2 http://www.alphaguardian.net/category/plc-cyber-vulnerabilities/), которые могут быть использованы для атаки на АСУ. Одной из таких уязвимостей является использование систем исполнения ПЛК (напр. CodeSYS RTE), представляющих из себя монолитную или многокомпонентную программу, исполняющуюся в одном виртуальном адресном пространстве на операционной системе, под управлением которой работает ПЛК. Таким образом если будет скомпрометирован хотя бы один функциональный компонент3, (3 ГОСТ Р МЭК 61131-1-2016. - С. 2) поддерживаемый системой исполнения ПЛК, например, осуществляющий взаимодействие с устройствами ввода, скомпрометирована будет вся система исполнения ПЛК.
Техническая проблема заключается в невозможности обеспечить безопасное функционирование АСУ, содержащей систему исполнения ПЛК, функциональные компоненты которой содержат уязвимости4. (4 ГОСТ Р 56546-2015. Национальный стандарт Российской Федерации. Защита информации. Уязвимости информационных систем. Классификация уязвимостей информационных систем'' (утв. и введен в действие Приказом Росстандарта от 19.08.2015 N 1181-ст).
В уровне технике отсутствуют решения, позволяющие решить указанную проблему кардинально. Используются различные сканеры уязвимостей и фильтры. Примером подобного решения приведен в статье "Protecting Industrial Control Systems with Cisco IPS Industrial Signatures"5 (5 http://www.cisco.com/c/en/us/about/security-center/protecting-industrial-control-systems-networks-ips.html).
Также в настоящее время возможны два полюсных варианта, в первом случае дизайн ПЛК разрабатывается таким образом, чтобы выполнять строго детерминированную задачу, что в принципе исключает какую-либо гибкость6 (6 способность переходить с одного вида продукции на другой с минимальными затратами времени и труда) и в использовании систем исполнения в их классическом понимании, нет необходимости. Либо используются ПЛК совместно с системами исполнения, что придает ПЛК максимальную гибкость, но при этом полностью игнорируется вопрос информационной безопасности (англ. information security), хотя выполнению требований по функциональной безопасности (англ. functional safety) уделяется очень пристальное внимание ввиду их нормативной регламентации7. (7 Стандарт IEC 61508 - Функциональная безопасность электрических, электронных, программируемых электронных систем, связанных с безопасностью).
Раскрытие изобретения
Настоящее изобретение предназначено для контроля исполнения системы исполнения ПЛК на программируемом логическом контроллере.
Технический результат настоящего изобретения заключается в обеспечении контроля над исполнением системы исполнения ПЛК на программируемом логическом контроллере. Технический результат достигается за счет контроля модулем безопасности взаимодействия модулей системы исполнения ПЛК между собой и операционной системой, который осуществляется путем разделения системы исполнения ПЛК на модули и модификации интерфейса обмена данными модулей между собой и с ресурсами операционной системы таким образом, чтобы направить взаимодействие через модуль безопасности, который и осуществляет контроль.
Другой технический результат настоящего изобретения заключается в повышении безопасности функционирования АСУ. Повышение безопасности АСУ достигается за счет разделения системы исполнения на модули и их изоляции, где фрагменты кода и данных, управляющие критическими объектами8 (8 ГОСТ Р 53114-2008. Национальный стандарт Российской Федерации. Защита информации. Обеспечение информационной безопасности в организации. Основные термины и определения'' (утв. и введен в действие Приказом Ростехрегулирования от 18.12.2008 N 532-ст), С. 6) выделяются в один модуль, а фрагменты кода, содержащие уязвимости, в другой. В результате реализации уязвимости в одном модуле злоумышленник не сможет скомпрометировать другой модуль, так как модули разделены и изолированы, а взаимодействие между ними контролируется.
Способ контроля исполнения системы исполнения ПЛК, в котором разделяют код и данные системы исполнения ПЛК или ее части на отдельные программные модули, при этом на программные модули разделяют на основании:
- функциональной структуры системы исполнения ПЛК, где выделяют в, по меньшей мере, один модуль функционально законченный фрагмент кода и данных системы исполнения ПЛК, остальной код и данные системы исполнения ПЛК выделяют в другой модуль; или
- угроз безопасности для системы исполнения ПЛК, где выделяют в, по меньшей мере, один модуль фрагмент кода и данных системы исполнения, содержащий уязвимость, используемую для реализации угроз, остальная часть кода и данных системы исполнения выделяют в другой модуль; или
- критичности кода и данных системы исполнения, где выделяют в, по меньшей мере, один модуль фрагмент кода и данных системы исполнения ПЛК, который управляет критическим объектом, остальной код и данные системы исполнения ПЛК выделяют в другой модуль.
По меньшей мере, один полученный модуль изолируют от других модулей и от ресурсов операционной системы, в которой исполняется система исполнения ПЛК, исключая возможность непосредственного обмена данными с другими модулями и с ресурсами ОС ПЛК. Устанавливают на ПЛК модуль безопасности. Модифицируют интерфейс обмена данными изолированных модулей, предназначенный для взаимодействия между собой, с другими модулями и с ресурсами операционной системы в условиях изоляции таким образом, чтобы указанное взаимодействие в условиях изоляции модулей осуществлялось только через установленный модуль безопасности, а формат данных, которыми обмениваются, соответствовал формату, определенному модулем безопасности. Контролируют исполнение системы исполнения ПЛК посредством контроля взаимодействия изолированных модулей системы исполнения ПЛК между собой и с ресурсами операционной системы модулем безопасности, при этом контроль в частном случае предполагает мониторинг взаимодействия, корректировку взаимодействия, остановку взаимодействия. Модули могут исполняться в отдельном процессе.
В частном случае изолируют модуль путем контейнеризации, а модуль безопасности устанавливается на операционную систему, под управление которой исполняется система исполнения ПЛК. Для изоляции возможно использовать технологию контейнеризации Linux или использовать технологию контейнеризации PikeOS.
В частном случае модуль безопасности исполняется под управлением операционной системы, под управлением которой исполняется система исполнения ПЛК.
В другом частном случае изолируют модули путем виртуализации, а модуль безопасности устанавливается на гипервизор.
При модификации интерфейса обмена данными меняют порядок и протокол обмена данными. При этом модифицируют интерфейс обмена данными для осуществления этого обмена через модуль безопасности не для любого взаимодействия модулей между собой и ОС, а только для критического, где критичность определяется на основании существующих и потенциальных угроз для системы исполнения ПЛК. В частном случае модуль безопасности осуществляет контроль на основании правил, формат которых совпадает с форматом данных, которыми модули обмениваются с собой и с операционной системой и взаимодействие проверяется модулем безопасности на соответствие, по меньшей мере одному, правилу.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:
Фиг. 1 изображает примеры систем исполнения ПЛК и систем программирования и отладки;
Фиг. 2 изображает осуществление настоящего изобретения;
Фиг. 3 изображает варианты разделения системы исполнения ПЛК на модули;
Фиг. 4 изображает варианты изоляции модулей системы исполнения ПЛК;
Фиг. 5 изображает варианты установки модуля безопасности на ПЛК;
Фиг. 6 изображает пример компьютерной системы общего назначения, с помощью которой может быть реализовано настоящее изобретение.
Осуществление изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Приведенное описание предназначено для помощи специалисту в области техники для исчерпывающего понимания изобретения, которое определяется только в объеме приложенной формулы.
Программируемый логический контроллер - электронная составляющая промышленного контроллера, специализированного (компьютеризированного) устройства, используемого для автоматизации технологических процессов. Система исполнения (англ. execution runtime, runtime environment) - программное и/или аппаратное окружение необходимое для выполнения компьютерной программы и доступное во время выполнения компьютерной программы. Известна также как система выполнения, среда выполнения, среда исполнения, исполнительная система.
Система исполнения программируемого логического контроллера9 (9 Петров И.В. «Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования» - М.: Солон-Пресс, 2010 - С. 48) (англ. control runtime system) - программное окружение, установленное на ПЛК, необходимое для выполнения управляющей (прикладной) программы и доступное во время выполнения управляющей программе. Обеспечивает загрузку, исполнение прикладной программы ПЛК и функции отладки. Устанавливается в контроллер в процессе его изготовления. Является монолитной программой (однокомпонентной) или программный комплекс (состоит из несколких компонентов). В случае монолитной программы все функционально законченные фрагменты кода10 (10 Под кодом здесь и далее понимается программный код в различных его формах: объектного кода, байт кода (промежуточный код), исполняемого кода, машинного кода) и данных программы, отвечающие за сетевой обмен, доступ к устройствам ввода вывода и иные функции размещены в рамках одного компонента, в другом случае разносятся по нескольким компонентам (напр. библиотекам). Примеры указанных систем: исполнительная система MasterPLC11, (11 http://www.insat.ru/products/?category=395) система исполнения CodeSys Runtime12 (12 https://www.codesys.com/products/codesys-runtime.html). На Фиг. 1 изображен вариант организации системы исполнения ПЛК. Функционально законченные фрагменты кода и данных, реализующие функции сетевого обмена, доступа к устройствам ввода вывода и иные функции, размещенные в рамках одной программы, далее будут обозначаться абстрактно: Функции А, Функции В, Функции С, где, например, под «Функцией А» понимается функционально законченный фрагменты кода и данных, отвечающие за реализацию «Функции А». Функциональный компонент следует отличать от программного компонента. Функциональный компонент является элементом функциональной структуры, а программный компонент - элемент программного комплекса.
Компонент системы исполнения - набор функционально законченных фрагментов кода и данных, объединенных в программу (приложение, библиотеку), функцию, функциональный блок, из которых иерархически строится система исполнения. Компоненты взаимодействуют между собой посредством интерфейса. В рамках данной заявки модуль системы исполнения - частный случай компонента, который исполняется отдельно от других компонентов системы исполнения ПЛК (напр. в другом адресном пространстве).
Совокупность взаимосвязанных компонентов (модулей), из которых иерархически строится система исполнения, реализует функциональную структуру13 (13 ''ГОСТ Р МЭК 61131-1-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 1. Общая информация'' (утв. и введен в действие Приказом Росстандарта от 13.05.2016 N314-ст), - С. 3) (функции, выполняемые системой исполнения). Порядок и формат взаимодействия взаимосвязанных компонентов определяются функциональной логикой. В частном случае, реализованная функциональная структура и функциональная логика (способ взаимодействия элементов функциональной структуры) являются реализованной в коде среды выполнения бизнес-логикой. Способ взаимодействия в частном случае определяет порядок и формат взаимодействия элементов.
Бизнес-логика системы исполнения - реализованная в коде классов, методов, процедур, функций среды выполнения совокупность правил, принципов, зависимостей поведения объектов в предметной области. Элемент бизнес-логики среды выполнения функционально законченный набор инструкций, классов, методов, процедур, функций. Совокупность элементов образует функциональную структуру системы исполнения или ее часть.
Бизнес-логика системы исполнения ПЛК - реализованная в коде классов, методов, процедур, функций среды выполнения совокупность правил, принципов, зависимостей поведения объектов в автоматизируемом технологическом процессе. Например, порядок сетевого обмена, доступ к устройствам ввода вывода, взаимодействие с ОС ПЛК.
Система программирования и отладки программ14 (14 ''ГОСТ Р МЭК 61131-1-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 1. Общая информация'' (утв. и введен в действие Приказом Росстандарта от 13.05.2016 N314-ст), - С. 2) (сокр. СПиО) связана с системой исполнения ПЛК. Именно посредством данной системы прикладная программа загружается в память ПЛК и передается под управление системе исполнения ПЛК. Пример СПиО изображен на Фиг. 1. В частном случае данная система может использоваться для управления системой исполнения ПЛК изменения ее конфигурации и установки дополнительных модулей на ПЛК.
Как отмечалось в разделе «Уровень техники» системы исполнения ПЛК имеют проблемы с безопасностью, по причине того, что система исполнения ПЛК представляет из себя монолитную программу или состоит из компонентов, которые исполняются в одном процессе. Настоящее изобретение позволяет разделить систему исполнения на модули, что позволит контролировать взаимодействие любых элементов функциональной структуры системы исполнения ПЛК или любых фрагментов кода системы исполнения между собой и с ресурсами операционной системы. Настоящее изобретение при использовании с другими системами исполнения, монолитными программами или многокомпонентными программами, исполняющимися в одном процессе, также позволяет:
повысить безопасность компьютерных систем, на которых перечисленные объекты функционируют (исполняются); и обеспечить контроль взаимодействия элементов этих объектов.
Данное изобретение применимо не только к программам или системам исполнениям целиком, но и к любым монолитным частям и компонентам программ и программных комплексов контроль над исполнением которых необходимо обеспечить, а также повысить безопасность компьютерных систем, на которых упомянутые части или компоненты исполняются. Поэтому следует отметить, что все, указанное для системы исполнения ПЛК, справедливо в равной мере, если явно не указано иное, или иное не следует из сущности системы исполнения ПЛК, вытекающей из особенностей ПЛК, для:
- других систем исполнения, их частей и отдельных компонентов (модулей);
- монолитных программ и их частей;
- многокомпонентных программ, исполняющихся в одном адресном пространстве, и отдельных компонентов (модулей) этих программ.
Осуществление данного изобретения изображено на Фиг. 2. На первом этапе 200 реализации способа получают систему исполнения ПЛК. Система исполнения ПЛК либо извлекается из ПЛК, либо систему исполнения ПЛК получают перед установкой на ПЛК. В другом частном случае способ реализуют с первого этапа непосредственно на ПЛК.
Далее на этапе 210 разделяют код и данные системы исполнения ПЛК на отдельные модули код и данные разделяются на основании функциональной структуры15 (15 ГОСТ МЭК 61131-1) системы исполнения ПЛК. При таком разделении выделяют в, по меньшей мере, один модуль функционально законченный фрагмент кода и данных системы исполнения ПЛК, остальной код и данные системы исполнения ПЛК выделяют в другой модуль. На Фиг. 3а изображен пример такого разделения, где фрагмент кода и данных предназначенный для выполнения «функций А» выделяется в «модуль 1», фрагмент кода и данных, предназначенные для выполнения «функций В», выделяется в «модуль 2», фрагмент кода и данных предназначенные для выполнения «других функций», оставшихся, выделяется в «модуль 3».
Также код и данные системы ПЛК разделяют на основании угроз безопасности16 (16 ГОСТ Р 56546-2015) для системы исполнения ПЛК. При таком разделении выделяют в, по меньшей мере, один модуль фрагмент кода и данных системы исполнения, содержащий уязвимость17 (17 Там же) (или уязвимый фрагмент кода, например, фрагмент, отвечающий за сетевое взаимодействие, именно он, как правило, подвергается атаке в первую очередь), используемую для реализации угроз, остальную часть кода и данных системы исполнения выделяют в другой модуль. На Фиг. 3б показано такое разделения, например фрагменты кода и данных, предназначенные для выполнения функций А, В, С, содержат уязвимости, фрагмент кода и данных, предназначенный для выполнения «функций А», выделяется в «модуль 1», фрагменты кода и данных, предназначенные для выполнения «функций В» и «функций С», выделяются в «модуль 2», фрагменты кода и данных, предназначенные для выполнения «других функций», оставшихся, и не содержащие уязвимости, выделяются в «модуль 3».
Разделение может осуществляться и на основании критичности фрагментов кода и данных системы исполнения, где выделяют в, по меньшей мере, один модуль фрагмент кода и данных системы исполнения ПЛК, который управляет критическим объектом18 (18 ГОСТ Р 53114-2008. Национальный стандарт Российской Федерации. «Защита информации. Обеспечение информационной безопасности в организации. Основные термины и определения'' (утв. и введен в действие Приказом Ростехрегулирования от 18.12.2008 №532-ст), С. 6) (критический фрагмент кода и данных), остальной код и данные системы исполнения ПЛК выделяют в другой модуль. На Фиг. 3в изображен пример такого разделения, где фрагмент кода и данных, предназначенный для выполнения «функций А», является критическим кодом и содержит критические данные, данный фрагмент выделяется в модуль 1, фрагменты кода и данных, предназначенные для выполнения «функций В», «функций С», «других функций», оставшихся, выделяются в «модуль 2».
Эти критерии при разделении могут использоваться как отдельно, так и совместно, в примере, изображенном на Фиг. 3б, используется разделение не только по наличию уязвимостей, но и на основании функциональной структуры системы исполнения ПЛК, а в примере, изображенном на Фиг. 3в, используется разделение не только по критичности кода/данных, но и на основании функциональной структуры системы исполнения ПЛК.
На Фиг. 3б и Фиг. 3в показаны примеры, где в модули выделяются функционально законченные фрагменты кода и данных, содержащие уязвимости или используемые для управление критическими объектами, в общем случае при разделении на основании критичности и угроз безопасности в модуль выделять функционально законченные фрагменты необязательно, выделяться могут любые критические фрагменты, или фрагменты, содержащие уязвимости, примеры представлены для простоты восприятия.
При выделении фрагментов кода в модули организуется способ взаимодействия (порядок обмена данными и формат данных) между модулями, эквивалентный способу взаимодействия этих фрагментов в системе исполнения ПЛК до разделения. Иначе говоря, какой фрагмент кода с каким фрагментом в каком порядке взаимодействовал, в таком порядке будут взаимодействовать модули, содержащие указанные фрагменты кода, после разделения системы исполнения ПЛК.
На этапе 220 изолируют созданные ранее модули друг от друга, от операционной системы и оборудования. Для изоляции используют технологии виртуализации с применением контейнеров или виртуальных машин19 (19 ГОСТ Р 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;20 (20 PikeOS - микроядерная операционная система реального времени, которая производится компанией SYSGO AG. Она ориентирована на безопасности критически важных встраиваемых систем. Она обеспечивает разделенную среду для нескольких операционных систем с различными целями проектирования и требованиями безопасности (оф. сайт https://www.sysgo.com/products/pikeos-hypervisor/) контейнеризация средствами Linux (англ. Linux Containers, сокр. LXC). В частном случае не все модули могут изолироваться, и их взаимодействие с операционной системой и другими модулями остается неизменным, данный факт отображен на примере модуля N на фигурах, для которого изоляция опциональна.
На этапе 230 устанавливают на ПЛК модуль безопасности, в частном случае модуль содержит функционально законченные наборы фрагментов кода и данных, отвечающие за реализацию функций безопасности (о том, как эти функции осуществляются будет описано ниже). Уровень архитектуры ПЛК, на котором будет функционировать модуль безопасности, будет определяться технологией, которая использовалась для изоляции модулей системы исполнения ПЛК. Например, если для изоляции использовались контейнеры (Фиг. 4а), и в ОС ПЛК установлена управляющая служба (напр. Docker), то модуль безопасности располагается на том же уровне, что и контейнеры (см. Фиг. 5а). Если для изоляции используются виртуальные машины (см. Фиг. 4б, Фиг. 4в, Фиг. 4г), то модуль безопасности устанавливается на уровне монитора виртуальных машин (гипервизора) или встраивается в него (см. Фиг. 5б, Фиг. 5в). На том же этапе модифицируют интерфейс обмена данными изолированных модулей, предназначенный для взаимодействия с другими модулями и с ресурсами операционной системы в условиях изоляции таким образом, чтобы указанное взаимодействие в условиях изоляции модулей осуществлялся только через установленный модуль безопасности, а формат данных, которыми обмениваются, соответствовал формату, определенному модулем безопасности. Таким образом структура сообщений, которыми обмениваются полностью или частично, известна модулю безопасности, данная структура (формат данных, иногда также называется интерфейсом) описывается, например, с помощью Interface Definition Language (IDL) и модуль безопасности в результате способен проверять, что передаваемое сообщение соответствует этому описанию, а также может использовать отдельные поля этого сообщения для целей контроля допустимости.
В результате модуль безопасности способен выполнять функции безопасности, а именно осуществлять контроль исполнения системы исполнения, который предполагает: мониторинг взаимодействия изолированных модулей между собой, с ресурсами операционной системы ПЛК или оборудованием; корректировку указанного взаимодействия, остановку взаимодействия. Модуль безопасности осуществляет контроль на основании правил, формат которых совпадает с форматом данных которыми модули обмениваются с собой и с операционной системой. Взаимодействие проверяется модулем безопасности на соответствие логическому правилу, которое хранится у модуля безопасности, правило содержит описание допустимого взаимодействия.
Модуль безопасности осуществляет мониторинг взаимодействия, где взаимодействие проверяется на соответствие правилу, если взаимодействие соответствует правилу, то взаимодействие пропускается и данные отправляются приемнику, если взаимодействие не соответствует правилу осуществляется корректировка взаимодействия (в данные, которыми обменивается приемник и источник, через модуль безопасности вносятся изменения) или взаимодействие не допускается (взаимодействие останавливается). Что должен сделать модуль безопасности при несоответствии взаимодействия правилу, описывающему подобное взаимодействие, определяется либо самим правилом, либо субсидиарным правилом, если правилом для осуществляемого взаимодействия модуль не располагает (диспозитивное регулирование). Например, допустимое взаимодействие (см. Фиг. 5б) «модуля 1» с «модулем 2», где «модуль 1» является источником, а «модуль 2» приемником, описывается основным «правилом А» и факультативным «правилом Б», также модуль безопасности содержит субсидиарное «правило X», которое необходимо применить в случае, когда ни одно другое правило никаких предписаний на возникшее взаимодействие не содержит. При контроле указанного взаимодействия модуль безопасности обнаружил, что взаимодействие «модуля 1» с «модулем 2» не соответствует «правилу А». «Правило А» на данный случай предписывает проверить взаимодействие на соответствие «правилу Б». Модуль безопасности поэтому проверяет взаимодействие на соответствие «правилу Б», модуль обнаруживает что взаимодействие не соответствует и «правилу Б», но на этот случай «правило Б» ничего не предписывает, поэтому модуль безопасности применяет некоторое «правило X», которое, например, предписывает остановить взаимодействие.
Настоящее изобретение в частном случае осуществляется посредством СПиО, элементы которой могут быть исполнены на процессоре компьютера общего назначения (например, который изображен на Фиг. 6).
Фиг. 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. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.

Claims (22)

1. Способ контроля исполнения системы исполнения программируемого логического контроллера (ПЛК), в котором:
а) разделяют код и данные системы исполнения ПЛК или ее части на отдельные программные модули, при этом на программные модули разделяют на основании:
- функциональной структуры системы исполнения ПЛК, где выделяют в, по меньшей мере, один модуль функционально законченный фрагмент кода и данных системы исполнения ПЛК, остальной код и данные системы исполнения ПЛК выделяют в другой модуль; или
- угроз безопасности для системы исполнения ПЛК, где выделяют в, по меньшей мере, один модуль фрагмент кода и данных системы исполнения, содержащий уязвимость, используемую для реализации угроз, остальная часть кода и данных системы исполнения выделяют в другой модуль; или
- критичности кода и данных системы исполнения, где выделяют в, по меньшей мере, один модуль фрагмент кода и данных системы исполнения ПЛК, который управляет критическим объектом, остальной код и данные системы исполнения ПЛК выделяют в другой модуль;
б) изолируют, по меньшей мере, один полученный модуль от других модулей и от ресурсов операционной системы, в которой исполняется система исполнения ПЛК, исключая возможность непосредственного обмена данными с другими модулями и с ресурсами ОС ПЛК;
в) устанавливают на ПЛК модуль безопасности;
г) модифицируют интерфейс обмена данными изолированных модулей, предназначенный для взаимодействия изолированных модулей между собой, с другими модулями и с ресурсами операционной системы в условиях изоляции таким образом, чтобы указанное взаимодействие в условиях изоляции модулей осуществлялось только через установленный модуль безопасности, а формат данных, которыми обмениваются, соответствовал формату, определенному модулем безопасности;
д) контролируют исполнение системы исполнения ПЛК посредством контроля взаимодействия изолированных модулей системы исполнения ПЛК между собой и с ресурсами операционной системы модулем безопасности.
2. Способ по п. 1, в котором изолируют модуль путем контейнеризации.
3. Способ по п. 2, в котором модуль безопасности устанавливается на операционную систему, под управлением которой исполняется система исполнения ПЛК.
4. Способ по п. 2, в котором для изоляции используют технологию контейнеризации Linux.
5. Способ по п. 2, в котором для изоляции используют технологию контейнеризации PikeOS.
6. Способ по п. 1, в котором модуль безопасности исполняется под управлением операционной системы, под управлением которой исполняется система исполнения ПЛК.
7. Способ по п. 1, в котором изолируют модули путем виртуализации.
8. Способ по п. 7, в котором модуль безопасности устанавливается на гипервизор.
9. Способ по п. 1, где при модификации интерфейса обмена данными меняется порядок и протокол обмена данными.
10. Способ по п. 1, в котором модифицируют интерфейс обмена данными для осуществления этого обмена через модуль безопасности не для любого взаимодействия модулей между собой и ОС, а только для критического, где критичность определяется на основании существующих и потенциальных угроз для системы исполнения ПЛК.
11. Способ по п. 1, в котором контроль предполагает мониторинг взаимодействия, корректировку взаимодействия, остановку взаимодействия.
12. Способ по п. 11, в котором модуль безопасности осуществляет контроль на основании правил, формат которых совпадает с форматом данных, которыми модули обмениваются с собой и с операционной системой.
13. Способ по п. 12, в котором взаимодействие проверяется модулем безопасности на соответствие, по меньшей мере одному, правилу.
14. Способ по п. 1, в котором модуль исполняется в отдельном процессе.
RU2017104131A 2017-02-08 2017-02-08 Способ контроля системы исполнения программируемого логического контроллера RU2638000C1 (ru)

Priority Applications (6)

Application Number Priority Date Filing Date Title
RU2017104131A RU2638000C1 (ru) 2017-02-08 2017-02-08 Способ контроля системы исполнения программируемого логического контроллера
US15/715,258 US10599120B2 (en) 2017-02-08 2017-09-26 System and method of monitoring of the execution system of a programmable logic controller
JP2017198987A JP6903544B2 (ja) 2017-02-08 2017-10-13 プログラマブル論理コントローラ実行システムの監視のためのシステム、方法、及び非一時的なコンピュータ可読媒体
EP17196462.0A EP3361332B1 (en) 2017-02-08 2017-10-13 System and method of monitoring of the execution system of a programmable logic controller
CN201710998035.2A CN108399330B (zh) 2017-02-08 2017-10-19 监控可编程逻辑控制器的执行系统的系统和方法
US16/799,313 US11029662B2 (en) 2017-02-08 2020-02-24 System and method for enabling data to be transmitted between program modules based on compliance with rules

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2017104131A RU2638000C1 (ru) 2017-02-08 2017-02-08 Способ контроля системы исполнения программируемого логического контроллера

Publications (1)

Publication Number Publication Date
RU2638000C1 true RU2638000C1 (ru) 2017-12-08

Family

ID=60581489

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2017104131A RU2638000C1 (ru) 2017-02-08 2017-02-08 Способ контроля системы исполнения программируемого логического контроллера

Country Status (4)

Country Link
US (2) US10599120B2 (ru)
JP (1) JP6903544B2 (ru)
CN (1) CN108399330B (ru)
RU (1) RU2638000C1 (ru)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102019217624A1 (de) * 2019-11-15 2021-05-20 Robert Bosch Gmbh Industrielles Steuerungssystem in der Automatisierungstechnik mit unabhängig voneinander agierenden Modulen

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321829A (en) * 1990-07-20 1994-06-14 Icom, Inc. Graphical interfaces for monitoring ladder logic programs
WO2006087191A1 (de) * 2005-02-17 2006-08-24 Bosch Rexroth Ag Maschinensteuerung mit sicherheitsfunktion
RU2458394C2 (ru) * 2006-10-27 2012-08-10 Майкрософт Корпорейшн Виртуализация для диверсифицированной защиты от несанкционированного вмешательства
RU2011122280A (ru) * 2008-12-02 2012-12-10 Майкрософт Корпорейшн Безопасное изолированное выполнение подключаемых модулей
JP2013171346A (ja) * 2012-02-17 2013-09-02 Fuji Electric Co Ltd 制御システム、制御装置及びプログラム実行制御方法
CN104597833A (zh) * 2015-01-14 2015-05-06 上海海得控制系统股份有限公司 一种plc保护系统及保护方法
US20160028693A1 (en) * 2014-07-28 2016-01-28 Ge Intelligent Platforms, Inc. Apparatus and method for security of industrial control networks

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730318B2 (en) 2003-10-24 2010-06-01 Microsoft Corporation Integration of high-assurance features into an application through application factoring
JP4664055B2 (ja) 2004-12-10 2011-04-06 株式会社エヌ・ティ・ティ・ドコモ プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
US8667589B1 (en) 2013-10-27 2014-03-04 Konstantin Saprygin Protection against unauthorized access to automated system for control of technological processes
EP3260976A1 (en) * 2014-06-30 2017-12-27 Firmitas Cyber Solutions (Israel) Ltd. System and method of generating a secured communication layer
US10365626B2 (en) 2015-02-12 2019-07-30 Siemens Aktiengesellschaft Extending the functionality of a programmable logic controller (PLC) with apps without changing the PLC programming
US10944764B2 (en) * 2015-02-13 2021-03-09 Fisher-Rosemount Systems, Inc. Security event detection through virtual machine introspection
WO2016172514A1 (en) 2015-04-24 2016-10-27 Siemens Aktiengesellschaft Improving control system resilience by highly coupling security functions with control
US10375106B1 (en) * 2016-01-13 2019-08-06 National Technology & Engineering Solutions Of Sandia, Llc Backplane filtering and firewalls

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321829A (en) * 1990-07-20 1994-06-14 Icom, Inc. Graphical interfaces for monitoring ladder logic programs
WO2006087191A1 (de) * 2005-02-17 2006-08-24 Bosch Rexroth Ag Maschinensteuerung mit sicherheitsfunktion
RU2458394C2 (ru) * 2006-10-27 2012-08-10 Майкрософт Корпорейшн Виртуализация для диверсифицированной защиты от несанкционированного вмешательства
RU2011122280A (ru) * 2008-12-02 2012-12-10 Майкрософт Корпорейшн Безопасное изолированное выполнение подключаемых модулей
JP2013171346A (ja) * 2012-02-17 2013-09-02 Fuji Electric Co Ltd 制御システム、制御装置及びプログラム実行制御方法
US20160028693A1 (en) * 2014-07-28 2016-01-28 Ge Intelligent Platforms, Inc. Apparatus and method for security of industrial control networks
CN104597833A (zh) * 2015-01-14 2015-05-06 上海海得控制系统股份有限公司 一种plc保护系统及保护方法

Also Published As

Publication number Publication date
JP6903544B2 (ja) 2021-07-14
US20200192321A1 (en) 2020-06-18
CN108399330A (zh) 2018-08-14
JP2018139098A (ja) 2018-09-06
US20180224823A1 (en) 2018-08-09
CN108399330B (zh) 2022-01-04
US11029662B2 (en) 2021-06-08
US10599120B2 (en) 2020-03-24

Similar Documents

Publication Publication Date Title
CN113711541B (zh) 改变容器化工作负载隔离的方法和系统
US20200301764A1 (en) Operating system on a computing system
US9621592B2 (en) System and method for software defined deployment of security appliances using policy templates
US8689282B1 (en) Security policy enforcement framework for cloud-based information processing systems
EP2979211B1 (en) Protecting software application
JP6745921B2 (ja) Plcの仮想的なパッチおよびセキュリティコンテキストの自動配信
WO2017052947A1 (en) Hardware-assisted software verification and secure execution
US10776486B2 (en) Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment
EP2286333A1 (en) Secure multi-purpose computing client
JP2018129019A (ja) 仮想マシンにおける悪意のあるファイルを分析するシステム及び方法
US10242194B2 (en) Method and apparatus for trusted execution of applications
CN113544643A (zh) 使用初始程序加载机制启动安全客户机
US9122633B2 (en) Case secure computer architecture
TWI772747B (zh) 用於將中斷及例外注入安全虛擬機器之電腦實施方法、電腦系統及電腦程式產品
RU2638000C1 (ru) Способ контроля системы исполнения программируемого логического контроллера
RU2637435C1 (ru) Способ обнаружения аномального исполнения системы исполнения программируемого логического контроллера
EP3361332B1 (en) System and method of monitoring of the execution system of a programmable logic controller
Cheruvu et al. IoT Software Security Building Blocks
Ramos Security challenges with virtualization
Rautava Reusable generic software robot
Bazuku et al. An Overview of Computer Operating Systems and Emerging Trends
Saxena Container Image Security with Trivy and Istio Inter-Service Secure Communication in Kubernetes
dos Santos Ramos Security challenges with virtualization
CN117940921A (zh) 在容器中执行特权操作
Owopetu Private cloud implementation and security: using Eucalyptus and Xen Frameworks