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, предоставляющие нужную информацию в нужное время и показывающие лицам, принимающим решения на производстве, как условия работы цеха могут быть оптимизированы для повышения производительности). Здесь с АСУ ТП работают управленцы и инженерно-технический персонал высшего уровня.
Типы мобильных приложений АСУ ТП и связанные с ними риски
Пульт управления (1): непосредственно конфигурация/мониторинг/контроль производственного процесса и/или его компонентов. Роли в инфраструктуре АСУ ТП:
- Конфигурация 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-проекты) на SD-карте.На рисунке показано, как это может выглядеть на смартфоне.
Хранилище HMI-проектов
В качестве примера возьмем вполне реальный HMI-проект. Это приложение перемещает некоторую жидкость из одной емкости в другую. Для контроля процесса предназначены кнопки Start/Stop и датчик потока. Если данные HMI-проекта скомпрометированы (вирус, другая уязвимость приложения, прямой доступ к памяти SD-карты с ПК и т. д.), злоумышленник способен слегка изменить его конфигурацию или интерфейс.
Датчик потока HMI
Он сможет заменить события и логику компонентов или, например, источники данных с датчиков. Когда оператор запустит приложение в следующий раз, он увидит, например, что-то типа такого.
Измененный интерфейс
Теперь ОБЕ кнопки запускают технологический процесс. Конечно, можно надеяться, что физические или низкоуровневые регуляторы предотвратят опасность, но атака по крайней мере приведет к сигналу тревоги или даже к технологической неисправности.
Хранение и передача данных в открытом виде
Даже если все данные, которые хранит и передает приложение, шифруются, ключи шифрования зачастую хранятся в коде самого приложения и являются статичными.
Ключи шифрования «зашитые» в коде приложений
То есть злоумышленник, получив доступ к критичной информации, которая зашифрована, зная, что это за приложение, может легко ее расшифровать.
Выводы
В ходе исследования мы рассмотрели 20 приложений для Android, так или иначе взаимодействующих с инфраструктурой АСУ ТП. Мы изучили решения для управления PLC, OPC- и MES-клиенты, клиенты для удаленного управления SCADA. Следует отметить, что мы не смогли найти ни одного приложения без недостатков и/или уязвимостей. Большинство из них продемонстрировали проблемы с аутентификацией и целостностью данных на локальном или сетевом уровне. Наиболее опасное последствие эксплуатации этих уязвимостей — «компрометация» оператора, которому внушается ложное понимание текущего состояния технологического процесса.
С полным текстом исследования можно ознакомиться по следующей ссылке:
http://dsec.ru/ipm-research-center/research/scada_and_mobile_phones_the_security