ЛИСТ B-04 · ПУБЛИКАЦИЯ
ARTICLE
← Назад к блогу

Критическая уязвимость в OpenPLC v3 позволяет выполнять произвольный код

Критическая уязвимость в OpenPLC v3 позволяет выполнять произвольный код

Обновленная информация от производителя сообщает о серьезной уязвимости в системе управления промышленными процессами OpenPLC версии 3. Эта проблема классифицируется как "authenticated arbitrary file write" и может привести к выполнению произвольного кода на устройстве. Атака возможна благодаря тому, что веб-интерфейс программы сохраняет имя загружаемого пользователем файла напрямую в базу данных, а затем использует это значение как путь назначения для сохраняемого файла без проверки его корректности. Это дает возможность пользователю с правами доступа записать файл в любую доступную директорию, включая те, которые используются для компиляции исполняемого бинарника OpenPLC.

Подробности эксплуатации уязвимости

Проблема возникает в процессе загрузки программ через устаревший интерфейс веб-приложения OpenPLC. При загрузке новой программы система принимает предоставленное пользователем имя файла (prog_file) и записывает его непосредственно в поле базы данных Programs.File. Затем этот путь используется для сохранения загруженного файла без какой-либо дополнительной проверки или ограничения пути. Поскольку функция Python os.path.join() обрабатывает абсолютные пути, предоставляемые пользователем, злоумышленник может указать любой путь внутри файловой системы, который доступен процессу веб-сервера OpenPLC.

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

Последствия атаки

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

Как защитить свою систему?

Для предотвращения использования данной уязвимости рекомендуется предпринять следующие шаги:

  • Обновление до последней версии: Производитель рекомендует пользователям перейти на версию OpenPLC v4, так как версия v3 больше не поддерживается и не получает обновлений безопасности.
  • Отключение устаревшего интерфейса: Если переход невозможен немедленно, отключите использование старого веб-интерфейса для загрузки программ.
  • Мониторинг активности пользователей: Регулярно отслеживайте действия пользователей, имеющих права на загрузку файлов, чтобы своевременно выявлять подозрительные операции.
  • Регулярные аудиты безопасности: Используйте специализированные инструменты для анализа сетевой инфраструктуры и выявления потенциальных угроз.

Дополнительные меры предосторожности

Помимо указанных выше рекомендаций, стоит также рассмотреть дополнительные меры для повышения уровня защищенности систем:

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

Заключение

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

Поделиться:TelegramVK

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