Бесплатно Экспресс-аудит сайта:

09.05.2020

В ПО промышленного контроллера CODESYS обнаружена RCE-уязвимость

Команда специалистов Cisco Talos обнаружила критическую уязвимость (CVE-2020-6081) в программном обеспечении для промышленных контроллеров CODESYS Control SoftPLC. Ее эксплуатация позволяет злоумышленнику удаленно выполнить код.

CODESYS Control SoftPLC представляет собой среду выполнения, преобразующую любой ПК или встроенное устройство в промышленный контроллер, соответствующий стандарту IEC 61131-3.

По словам экспертов, уязвимость удаленного выполнения кода связана с функциональностью PLC_Task программного обеспечения. Преступник может проэксплуатировать проблему путем отправки специально сформированных пакетов по сети. Проблема затрагивает версию CODESYS Control SoftPLC 3.5.14.30 и получила оценку в 9,9 балла по шкале CVSS.

Код приложения для CODESYS компилируется в машинный код при отправке с ПО. Машинный код подвергается проверке алгоритма CRC-32 только перед его выполнением в контексте двоичного кода codesys3 в отдельном потоке. Создав файл .app с соответствующим shell-кодом архитектуры, злоумышленник может удаленно выполнить код с возможностью загрузки проектов. Загрузка может происходить по SSH-протоколу или Codesys-порту 11740 с использованием проприетарного протокола. Чтобы пройти проверку CRC, необходимо создать файл .crc с учетом алгоритма CRC-32 для всего файла .app.

Уязвимость связана с отсутствием принудительной криптографической проверки загруженного двоичного объекта. Поскольку аутентификация может быть отключена для порта 11740, используемого для загрузки приложений ПЛК на устройство, требуется криптографическая подпись для проверки того, что двоичный файл поступает из доверенного источника. Без криптографической проверки, в случае, если устройство было настроено на блокировку прямого доступа к устройству, кроме требуемой логики приложения в соответствии со стандартами IEC 61131, произвольный код мог быть выполнен непосредственно на устройстве с привилегиями, связанными со временем выполнения Codesys.