SCADA и мобильники: оценка безопасности приложений, превращающих смартфон в пульт управления заводом
Сегодня мобильные технологии – неотъемлемая часть нашей жизни, и иногда проникают туда, где их не следовало бы использовать. Удобство часто оказывается важнее безопасности. Сейчас можно отслеживать состояние АСУ ТП (автоматизированной системы управления технологическим процессом) или даже управлять ей с новенького смартфона на Android или iOS. Поищите “HMI” (человеко-машинный интерфейс), “SCADA” (система диспетчерского контроля и сбора данных) или “PLC” (программируемый логический контроллер) в магазине Google Play, и вы удивитесь количеству результатов. Более того, многие из этих приложений разработаны серьезными производителями: Siemens, GE, Omron и т. д., и обеспечивают доступ, контроль и управление HMI, PLC, DCS (распределенная система управления) и SCADA-системами в инфраструктуре АСУ ТП. Безопасны ли они? Может ли злоумышленник нанести вред, получив доступ к планшету инженера-технолога? Какие уязвимости существуют в этих приложениях? Какие векторы атак возможны?
Цель – не только найти ошибки безопасности в мобильных приложениях для АСУ ТП, но и попытаться экстраполировать риски компрометации этих приложений на риски компрометации всей инфраструктуры АСУ ТП. Этот подход отличается от привычного взгляда на оценку безопасности мобильных приложений: уязвимости с традиционно низким уровнем опасности могут подвергнуть АСУ ТП огромному риску, а уязвимости, которые обычно считаются критичными угрозами, наоборот, бывают опасны для АСУ ТП с очень низкой вероятностью.
Немного об АСУ ТПСовременные инфраструктуры АСУ ТП имеют сложную архитектуру, состоящую из таких общеизвестных элементов, как серверы, ПК, сетевые коммутаторы, технологии программного обеспечения (.Net, DCOM, XML и т. д.), и более сложных компонентов: программируемых контроллеров, передатчиков, силовых приводов, аналоговых контрольных сигналов и т. д.
Нижний уровень (1)Здесь расположены полевые устройства. Как уже упоминалось выше, они подходят для «грязной» работы: например, они могут контролировать температуру и давление в реакторе, управлять такими операциями, как открытие и закрытие клапанов, включение и выключение насосов и пр. На этом уровне часто используется множество устройств. Это могут быть низкоуровневые программируемые логические контроллеры. Кроме того, на этом уровне могут находиться передатчики и приводы, управляемые удаленным терминальным устройством (RTU, электронное устройство под управлением микропроцессора, которое переводит физические объекты в сигналы, понятные распределенной системе управления или SCADA-системе, путем передачи телеметрических данных на ведущую систему и сообщений от ведущей диспетчерской системы к контролируемым объектам). Этот уровень – царство низкоуровневых промышленных протоколов, таких как Modbus, Modbus TCP, HART, Wireless HART, Profibus DP или PA, Foundation Fieldbus H1. Инженеры нижнего уровня АСУ ТП, электрики, техники и другие специалисты работают на этом уровне АСУ ТП.
Средний уровень (2)На этом уровне можно встретить высокоуровневые PLC, распределенные системы управления (DCS, система управления технологическим процессом, отличающаяся построением распределенной системы ввода-вывода и децентрализацией обработки данных), системы диспетчерского контроля и сбора данных (Supervisory Control and Data Acquisition (SCADA), программный пакет, предназначенный для разработки или обеспечения работы в реальном времени систем сбора, обработки, отображения и архивирования информации об объекте мониторинга или управления) и человеко-машинные интерфейсы (Human-Machine Interface (HMI)), а также такие серверы, как OPC (Open Platform Communications, ранее OLE for Process Control – OLE для управления процессами). Здесь осуществляется вся интеллектуальная деятельность. На основе данных с низших уровней операторы и автоматизированные системы принимают решения и отправляют команды на полевые устройства. Здесь проходит весь процесс автоматизации производства. Операторы, инженеры-технологи, инженеры АСУ ТП, программисты PLC и ПО работают с системами на этом уровне.
Верхний уровень (3)На нем осуществляется интеграция бизнеса и промышленных процессов. Этот слой обеспечивает привязку к корпоративной сети и системам планирования ресурсов предприятия (ERP). На данном уровне расположены различные системы управления активами производства (PAS) и системы управления производственными процессами (MES, предоставляющие нужную информацию в нужное время и показывающие лицам, принимающим решения на производстве, как условия работы цеха могут быть оптимизированы для повышения производительности). Здесь с АСУ ТП работают управленцы и инженерно-технический персонал высшего уровня.
Типы мобильных приложений АСУ ТП и связанные с ними риски- Конфигурация PLC. Настройка и/или контроль компонентов АСУ ТП: PLC, HMI, подключенных к PLC, RTU и прочего. Мобильное приложение подключается к компоненту АСУ ТП по промышленной сети (нижний и средний уровни инфраструктуры). Оно осуществляет контроль над состоянием компонента или его (пере)настройку. Можно считать его аналогом стандартного переносного терминала, спрятанным внутри Nexus или Xperia.
- Клиент для SCADA. Контроль над промышленным процессом с помощью SCADA-клиента или виртуального интерфейса для подключения к SCADA. Эти приложения позволяют инженерам-технологам подключаться с телефона или планшета к SCADA-приложению и при необходимости контролировать производственный процесс.
- Мобильная HMI-панель. HMI-панель внутри мобильного устройства для контроля или управления несколькими промышленными компонентами. Позволяет инженеру формировать (и даже программировать!) HMI-панель и подключать ее компоненты собственно к PLC или другим устройствам через Modbus/TCP, OPC или иные протоколы и интерфейсы.
Клиент для OPC/MES или система архивации (2): приложения-архиваторы позволяют инженеру или владельцу процесса читать и интерпретировать некоторые сведения из среднего и высшего уровня компонентов АСУ ТП. Данные доступны только для чтения, причем у пользователя даже нет прямого доступа к PLC, HMI или SCADA – только возможность просмотра определенных переменных. В эту же категорию мы включили мобильные клиенты для MES-приложений. Они, как правило, используются, чтобы читать данные с сервера архивации или агрегированные данные от MES-системы. Типичное приложение из этой категории – клиент (браузер) для OPC. Он подключается не непосредственно к компонентам АСУ ТП, а к серверу OPC. Соединение обычно происходит на высших уровнях инфраструктуры. Кроме того, подключение может быть выполнено дистанционно. Это значит, что в таком приложении должны быть внедрены механизмы шифрования и аутентификации. Хотя чтение агрегированных данных само по себе не представляет угрозы, эта информация может быть использована злоумышленником для понимания (обратной разработки) промышленного процесса и создания специализированного сценария атаки. Кроме того, если приложение применяется вне заводской сети, появляются новые угрозы: например, компрометация телефона инженера или руководителя через уязвимость в приложении.
Удаленное управление SCADA (3): приложения, позволяющие удаленно (из-за пределов заводской сети) отслеживать/контролировать производственный процесс. Хотя для этого пригодны и решения первой категории, разработчики не продвигают и даже не афишируют эту возможность. Для всех приложений этой группы мы нашли снимки/схемы/архитектурные чертежи/документы от разработчика, где мобильный клиент используется для удаленного управления снаружи промышленной сети (высшего и низшего уровней). Поэтому мы предполагаем, что потенциальные пользователи будут иногда (или всегда) подключаться к промышленному процессу из общедоступных сетей, ненадежных домашних сетей или с помощью сотовой связи. Также неясно, в какой среде такое приложение будет работать на Android и не будет ли там вредоносного ПО, рутованной системы и других факторов риска. Требования к безопасности и надежности для таких приложений самые строгие.
Типичные места расположения мобильных приложений для АСУ ТП
Угрозы для разных типов приложений Пульт управленияОтсутствие на стороне сервера проверки данных с точки зрения промышленного процесса. Из-за того, что серверное приложение полностью доверяет данным, которые пришли от оператора, и корректность технологического процесса полностью зависит от действий и команд, которые он отправляет, какие-либо недостатки валидации данных могут привести к серьезным последствиям. При этом, в мобильном приложении легче ошибиться в разряде числа или случайно задать отрицательное значение параметра. Неверная интерпретация значений так-же может привести к отказу в обслуживании как серверного, так и клиентского приложения.
Компрометация данных, хранящихся на SD-карте – многие приложения хранят данные на SD-карте: логи, проекты HMI и другие данные. Соответственно, все они имеют доступ к общей информации. Приложение, установленное из сторонних источников (или поддельное из официального магазина), может читать или модифицировать данную информацию – например, изменить интерфейс или функционал мобильного HMI-приложения.
Клиент для OPC/MES или система архивацииПоскольку данные приложения находятся уже не в защищенном контуре и передаются по сетям общего назначения (Интернет), возможна компрометация сервера и приложения с помощью перехвата данных, которые поступают от приложения к серверу. Злоумышленник может получить доступ к авторизационной информации, конфигурации конечного устройства, каким-либо сведениям о состоянии системы, а также подменять управляющие команды.
Сокрытие сигналов тревоги. Используя возможность перехвата трафика, Злоумышленник способен изменять ответ от сервера таким образом, что вместо информации о происшествии на предприятии оператор получит сообщение о том, что все в порядке, или, что еще хуже, противоположные сведения. В свою очередь, несвоевременное или ложное информирование может привести к приостановке технологического процесса, пока оператор разбирается, где неполадка: в оборудовании или все же в приложении.
Отказ в обслуживании клиента и сервера системы может привести к задержкам в информировании.
Удаленное управление SCADAПоскольку приложения данного типа позиционируются производителями ПО именно как инструмент удаленного управления SCADA-серверами, возможен перехват и изменение управляющих команд, утечка критичной информации, перехват и модификация трафика с целью компрометации технологического процесса.
Список приложений: в таблице ниже перечислены все протестированные мобильные приложения (отсортированы по типу).
Уязвимости и пример атакиВ целом, было найдено 50 уязвимостей, среди которых: незащищенные или недостаточно защищенные методы передачи и хранения данных (включая некорректное использование SSL или “самодельные” криптоалгоритмы), удаленная атака на отказ в доступе на клиент и сервер, SQL-инъекции, использование недоверенных входных данных в качестве параметров настройки техпроцесса и др. Эксплуатация этих проблем безопасности потенциально позволяет реализовать ряд опасных атак как на приложение, так и на оператора. В последнем случае, реально создать ложное представление о текущем состоянии техпроцесса, что может привести к принятию неверных решений с тяжелыми последствиями для предприятия.
Компрометация базы данных HMIК данным, которые хранятся на SD-карте, можно получить доступ следующим образом:
- Через физический доступ к SD-карте;
- Благодаря вирусу на устройстве;
- Любая уязвимость платформы или стороннего приложения. То есть, скомпрометировав стороннее приложение, которое не имеет отношения к целевому мобильному приложению, можно также получить доступ к SD-карте и модифицировать данные.
Хранилище HMI-проектов
В качестве примера возьмем вполне реальный HMI-проект. Это приложение перемещает некоторую жидкость из одной емкости в другую. Для контроля процесса предназначены кнопки Start/Stop и датчик потока. Если данные HMI-проекта скомпрометированы (вирус, другая уязвимость приложения, прямой доступ к памяти SD-карты с ПК и т. д.), злоумышленник способен слегка изменить его конфигурацию или интерфейс.
Датчик потока HMI
Он сможет заменить события и логику компонентов или, например, источники данных с датчиков. Когда оператор запустит приложение в следующий раз, он увидит, например, что-то типа такого.
Измененный интерфейс
Теперь ОБЕ кнопки запускают технологический процесс. Конечно, можно надеяться, что физические или низкоуровневые регуляторы предотвратят опасность, но атака по крайней мере приведет к сигналу тревоги или даже к технологической неисправности.
Хранение и передача данных в открытом видеДаже если все данные, которые хранит и передает приложение, шифруются, ключи шифрования зачастую хранятся в коде самого приложения и являются статичными.
Ключи шифрования «зашитые» в коде приложений
То есть злоумышленник, получив доступ к критичной информации, которая зашифрована, зная, что это за приложение, может легко ее расшифровать.
ВыводыВ ходе исследования мы рассмотрели 20 приложений для Android, так или иначе взаимодействующих с инфраструктурой АСУ ТП. Мы изучили решения для управления PLC, OPC- и MES-клиенты, клиенты для удаленного управления SCADA. Следует отметить, что мы не смогли найти ни одного приложения без недостатков и/или уязвимостей. Большинство из них продемонстрировали проблемы с аутентификацией и целостностью данных на локальном или сетевом уровне. Наиболее опасное последствие эксплуатации этих уязвимостей – «компрометация» оператора, которому внушается ложное понимание текущего состояния технологического процесса.