Раскрыты подробности 10-балльных уязвимостей в CODESYS 2

Раскрыты подробности 10-балльных уязвимостей в CODESYS 2

Раскрыты подробности 10-балльных уязвимостей в CODESYS 2

Исследователи из Positive Technologies выявили 10 уязвимостей в фреймворке CODESYS 2; больше половины из них получили по 10 баллов из 10 возможных по шкале CVSS. Данных о злонамеренном использовании какой-либо из новых брешей пока нет. Вендор выпустил соответствующие патчи 11 мая.

Системы CODESYS обеспечивают пользователю среду разработки прикладных программ для ПЛК. Этот фреймворк используют сотни российских и зарубежных производителей, в том числе WAGO, Beckhoff, Kontron, Moeller, Festo, Mitsubishi и HollySys. Созданные ими прошивки установлены на миллионах устройств промышленного назначения.

Основной причиной найденных экспертами проблем является неадекватная проверка данных, вводимых пользователем. Эксплойт во всех случаях предполагает наличие сетевого доступа к устройству.

«Вендор оценил некоторые из этих уязвимостей в 10 из 10 баллов — как крайне опасные, — комментирует Владимир Назаров, глава отдела PT по безопасности промышленных систем управления. — Их эксплуатация может привести к удаленному выполнению команд на ПЛК, что чревато нарушением технологических процессов, авариями на производстве и экономическими убытками. Самый известный пример эксплуатации подобных уязвимостей связан со Stuxnet: это вредоносное ПО смогло изменить проект в ПЛК, в результате чего центрифуги на заводе в иранском Натанзе физически вышли из строя».

Все эти критические уязвимости были выявлены в веб-сервере — компоненте  CODESYS 2, без которого отображение человеко-машинного интерфейса в браузере невозможно (может также использоваться автономно). Согласно бюллетеню разработчика, проблемы CVE-2021-30189 по CVE-2021-30194 классифицируются как переполнение буфера, неадекватный контроль доступа, чтение и запись за границами буфера или обход проверок безопасности файлов. Эксплойт во всех случаях тривиален и позволяет вызвать состояние отказа в обслуживании (DoS) или выполнить произвольный код.

Три уязвимости в системе CODESYS Control V2, отвечающий за связь с клиентскими системами разработки CODESYS, вендор определил как переполнение буфера (CVE-2021-30186, CVE-2021-30188) и неадекватная проверка входных данных (CVE-2021-30195). Их эксплуатация грозит DoS или исполнением стороннего кода и осуществляется отправкой на сервер вредоносного запроса (может потребовать авторизации). Все эти проблемы получили по 8,8 балла CVSS.

Последняя уязвимость (CVE-2021-30187) возникла из-за некорректной реализации подключения библиотеки SysFile при выполнении программы CODESYS Control V2 на Linux. Этот недочет можно использовать для вызова дополнительных функций ОС — к примеру, для удаления файлов, критически важных для технологического процесса. Эксплойт в данном случае тоже может потребовать ввод пароля, но атаку сможет провести любой, даже самый неумелый программист. Степень опасности этой уязвимости оценена в 5,3 балла по CVSS.

Создатель Диспетчера задач объяснил, почему загрузка CPU в Windows врёт

Бывший инженер Microsoft Дэйв Пламмер, приложивший руку к таким знаковым вещам, как поддержка ZIP в Windows и меню «Пуск» в Windows NT, рассказал, как на самом деле Диспетчер задач считает загрузку процессора. И заодно объяснил, почему цифры в этом инструменте иногда кажутся немного странными, особенно если сравнивать их с тем, как компьютер ощущается в реальной работе.

По словам Пламмера, идея просто показать, насколько занят процессор на деле куда сложнее, чем кажется.

Вопросов тут сразу слишком много: занят чем именно, на одном ядре или на всех, прямо сейчас или в среднем за последние секунды, в пользовательском режиме или на уровне ядра? Как только начинаешь во всём этом разбираться, простая шкала загрузки уже перестаёт выглядеть такой уж простой.

Сам Диспетчер задач, как объяснил Пламмер, работает не в режиме мгновенного измерения. Он обновляет данные через определённые интервалы, то есть показывает скорее интерпретацию того, что происходило между обновлениями, а не живую картину в каждый конкретный момент. Поэтому цифры на экране — это всегда усреднённый результат, а не моментальный снимок состояния процессора.

Самым очевидным решением мог бы быть простой расчёт по времени между обновлениями интерфейса. Но Пламмер от такого подхода отказался: он посчитал, что полагаться на точность GUI-таймера — идея так себе. Он даже сравнил это с попыткой доверить точный ритм метронома, который едет в кузове пикапа по разбитой дороге.

Вместо этого он заложил в Диспетчер задач другой принцип. Утилита запрашивает, сколько процессорного времени каждый процесс суммарно использовал с момента запуска (отдельно в пользовательском и системном режимах).

Затем из нового значения вычитается предыдущее, полученное во время прошлого обновления. Так определяется, сколько CPU-времени процесс съел за конкретный промежуток. А дальше это сравнивается с общим объёмом процессорного времени, которое было израсходовано всеми процессами за тот же период.

Звучит не очень просто, но именно такой метод, по словам Пламмера, даёт более точный результат, чем грубый расчёт по таймеру. Проблема в другом: современные процессоры стали намного сложнее, чем во времена, когда создавался классический Диспетчер задач.

Сегодня на работу CPU влияют динамическое изменение частоты, турбобуст, тепловые ограничения, глубокие режимы простоя и другие механизмы. Из-за этого один и тот же процент загрузки уже не всегда означает один и тот же объём реально выполненной работы. Пламмер привёл образное сравнение: современная загрузка CPU больше похожа не на пройденное расстояние, а на загруженность шоссе. Полупустая трасса с быстрыми спорткарами может перевезти больше, чем полностью забитая дорога со старыми грузовиками.

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

RSS: Новости на портале Anti-Malware.ru