Компания по защите операционных технологий Nozomi Networks примерно с 5 сентября 2026 года фиксировала всплеск попыток эксплуатации CVE-2021-35394 в Realtek Jungle SDK. Эта уже исправленная уязвимость удалённого выполнения кода получила 9,8 балла по шкале CVSS. Часть атак заканчивалась установкой Linux-вредоноса Cling. В отчёте от 5 октября 2026 года Fortinet FortiGuard Labs назвала его ClingSTUN и описала как backconnect-прокси-бэкдор: заражённое устройство превращается в управляемый извне прокси-узел.

Cling не изобрёл нового способа распространения, зато необычно распорядился протоколом STUN, или Session Traversal Utilities for NAT. В норме STUN помогает устройствам за NAT-шлюзом либо межсетевым экраном устанавливать прямую связь; он привычен для VoIP, WebRTC и других приложений реального времени. Вредонос узнаёт через публичные STUN-серверы внешний IP-адрес и назначенные NAT порты, поддерживает привязки, регистрирует заражённый узел и принимает команды. Поэтому управляющий обмен похож на обычный трафик обхода NAT, хотя за ним скрываются прокси, TCP-туннели, удалённое исполнение команд, саморазмножение и DoS-атаки.
Сначала бот отправляет публичным STUN-серверам Binding Request, но вместо требуемого спецификацией случайного идентификатора транзакции записывает в поле одни нули. Binding Success Response сообщает публичный адрес конечной точки и видимые снаружи порты. Cling сохраняет эти порты, затем посылает каждому серверу из списка собственную регистрационную UDP-дейтаграмму. В неё входят номера портов и метка способа заражения, например realtek.selfrep или selfrep.router. После регистрации вредонос ждёт UDP-пакеты, где операторские команды закодированы прямо в поле идентификатора STUN-транзакции.
Самодельная регистрационная дейтаграмма стандарту STUN не соответствует, поэтому обычные серверы её отбрасывают. В исследованной Nozomi конфигурации находились 13 серверов, и один из них, 145.249.115[.]184, отвечал странно: возвращал нулевой идентификатор вместо копии идентификатора исходного Binding Request. Такое поведение похоже на специально подготовленную обработку трафика Cling и допускает передачу команд через то же поле. Рассылка регистрации по всему списку также даёт оператору шанс заметить нового бота, если он контролирует или наблюдает хотя бы один указанный сервер.
Ещё хитрее выглядели команды, которые, по наблюдениям Nozomi, приходили с 74.125.250[.]129. Этот адрес связан с разрешением имени . Пакеты не просто имитировали формат STUN: со стороны сети они выглядели ответами одного из самых известных публичных STUN-сервисов. На фоне разрешённого VoIP- или WebRTC-трафика такой обмен легко пропустить, особенно если мониторинг проверяет лишь адрес назначения и номер порта, но не нулевые идентификаторы, нестандартные дейтаграммы и повторяющиеся обращения сразу к 13 узлам.
Набор команд Cling позволяет рекурсивно искать уязвимые устройства и распространяться как червь, запускать и останавливать TCP-туннели и прокси, выполнять команды, закрепляться в системе, уничтожать конкурирующие вредоносы и проводить DoS-атаки по заданному адресу в течение указанного времени. Среди обнаруженных целей флуда были 112.151.157[.]222:8080, относящийся к южнокорейскому интернет-провайдеру; кластер Чикагского университета 192.170.240[.]137:53; а также два узла Minecraft на порту 25565: 23.81.40[.]193 и 147.185.221[.]129.
Для проверки единственного экземпляра Cling создаёт сокет с параметром SO_REUSEADDR и пытается занять порт 33957. Если привязка не удаётся, образец спокойно завершает работу. Для закрепления он копирует себя в /root/.cling и /usr/local/bin/.cling, после чего добавляет запуск обоих файлов в /etc/inittab, /etc/init.d/rcS и /etc/rc.d/rc.boot. Это рассчитано на системы с SysV init и BusyBox init. Альтернативный приём грубее: вредонос находит настоящий wget, переносит его в другое место и занимает его путь, так что Cling запускается всякий раз, когда легитимный процесс вызывает команду wget.
Образец Nozomi содержал код эксплуатации семи RCE-уязвимостей в маршрутизаторах и цифровых видеорегистраторах: CVE-2014-8361 в Realtek SDK, CVE-2016-10372 в роутере Eir D1000, CVE-2016-20016 в MVPower CCTV DVR, CVE-2023-26801 в маршрутизаторах LB-LINK, CVE-2023-41011 в FiberHome SR1041F и China Mobile HG6543C4, CVE-2024-3721 в TBK DVR и CVE-2025-34037 в устройствах Linksys. Fortinet обнаружила семь жёстко встроенных эксплойтов для саморазмножения: CVE-2014-8361, CVE-2016-20016, CVE-2023-26801, CVE-2023-41011, CVE-2024-3721, CVE-2025-34037 и CVE-2026-87827 для KGUARD DVR. Разница между наборами заметна: в образце Nozomi присутствовала CVE-2016-10372 для Eir D1000, а в перечне Fortinet её место заняла CVE-2026-87827.
Fortinet также зафиксировала начальное проникновение через другие ошибки внедрения команд: CVE-2019-7256 в Linear; CVE-2019-17621, CVE-2022-37055, CVE-2024-23624, CVE-2024-10914, CVE-2024-10915 и CVE-2024-23625 в D-Link; CVE-2021-36380 в Sunhillo SureLine; CVE-2022-26289, CVE-2022-35555, CVE-2024-32281, CVE-2024-32292, CVE-2024-32314, CVE-2024-35340 и CVE-2024-46048 в Tenda; CVE-2022-36553 в Hytec Inter HWL-2511-SS; CVE-2023-1389 в TP-Link; связку CVE-2023-46805 и CVE-2024-21887 в Ivanti Connect Secure и Policy Secure; CVE-2024-7029 в AVTECH; CVE-2025-34035 в EnGenius; CVE-2025-67038 в Lantronix EDS5000; CVE-2026-36356 в MeiG.
Загрузочные shell-скрипты доставляют сборки Cling для ARM, Intel 80386, MIPS R3000, PowerPC и AMD X86-64, поэтому под угрозой оказываются разнородные роутеры, камеры, DVR и прочие доступные из интернета Linux-устройства. Для поиска заражения мало блокировать один адрес: полезнее проверять нулевые STUN transaction ID, нестандартные UDP-регистрации, обращения к 145.249.115[.]184 и необычные ответы от адресов, связанных с . На самих устройствах поводом для проверки служат порт 33957, скрытые файлы .cling, изменения сценариев загрузки и подменённый wget. Закрытие перечисленных CVE и удаление ненужного внешнего доступа лишают Cling основного материала для пополнения ботнета.

Изображение носит иллюстративный характер
Cling не изобрёл нового способа распространения, зато необычно распорядился протоколом STUN, или Session Traversal Utilities for NAT. В норме STUN помогает устройствам за NAT-шлюзом либо межсетевым экраном устанавливать прямую связь; он привычен для VoIP, WebRTC и других приложений реального времени. Вредонос узнаёт через публичные STUN-серверы внешний IP-адрес и назначенные NAT порты, поддерживает привязки, регистрирует заражённый узел и принимает команды. Поэтому управляющий обмен похож на обычный трафик обхода NAT, хотя за ним скрываются прокси, TCP-туннели, удалённое исполнение команд, саморазмножение и DoS-атаки.
Сначала бот отправляет публичным STUN-серверам Binding Request, но вместо требуемого спецификацией случайного идентификатора транзакции записывает в поле одни нули. Binding Success Response сообщает публичный адрес конечной точки и видимые снаружи порты. Cling сохраняет эти порты, затем посылает каждому серверу из списка собственную регистрационную UDP-дейтаграмму. В неё входят номера портов и метка способа заражения, например realtek.selfrep или selfrep.router. После регистрации вредонос ждёт UDP-пакеты, где операторские команды закодированы прямо в поле идентификатора STUN-транзакции.
Самодельная регистрационная дейтаграмма стандарту STUN не соответствует, поэтому обычные серверы её отбрасывают. В исследованной Nozomi конфигурации находились 13 серверов, и один из них, 145.249.115[.]184, отвечал странно: возвращал нулевой идентификатор вместо копии идентификатора исходного Binding Request. Такое поведение похоже на специально подготовленную обработку трафика Cling и допускает передачу команд через то же поле. Рассылка регистрации по всему списку также даёт оператору шанс заметить нового бота, если он контролирует или наблюдает хотя бы один указанный сервер.
Ещё хитрее выглядели команды, которые, по наблюдениям Nozomi, приходили с 74.125.250[.]129. Этот адрес связан с разрешением имени . Пакеты не просто имитировали формат STUN: со стороны сети они выглядели ответами одного из самых известных публичных STUN-сервисов. На фоне разрешённого VoIP- или WebRTC-трафика такой обмен легко пропустить, особенно если мониторинг проверяет лишь адрес назначения и номер порта, но не нулевые идентификаторы, нестандартные дейтаграммы и повторяющиеся обращения сразу к 13 узлам.
Набор команд Cling позволяет рекурсивно искать уязвимые устройства и распространяться как червь, запускать и останавливать TCP-туннели и прокси, выполнять команды, закрепляться в системе, уничтожать конкурирующие вредоносы и проводить DoS-атаки по заданному адресу в течение указанного времени. Среди обнаруженных целей флуда были 112.151.157[.]222:8080, относящийся к южнокорейскому интернет-провайдеру; кластер Чикагского университета 192.170.240[.]137:53; а также два узла Minecraft на порту 25565: 23.81.40[.]193 и 147.185.221[.]129.
Для проверки единственного экземпляра Cling создаёт сокет с параметром SO_REUSEADDR и пытается занять порт 33957. Если привязка не удаётся, образец спокойно завершает работу. Для закрепления он копирует себя в /root/.cling и /usr/local/bin/.cling, после чего добавляет запуск обоих файлов в /etc/inittab, /etc/init.d/rcS и /etc/rc.d/rc.boot. Это рассчитано на системы с SysV init и BusyBox init. Альтернативный приём грубее: вредонос находит настоящий wget, переносит его в другое место и занимает его путь, так что Cling запускается всякий раз, когда легитимный процесс вызывает команду wget.
Образец Nozomi содержал код эксплуатации семи RCE-уязвимостей в маршрутизаторах и цифровых видеорегистраторах: CVE-2014-8361 в Realtek SDK, CVE-2016-10372 в роутере Eir D1000, CVE-2016-20016 в MVPower CCTV DVR, CVE-2023-26801 в маршрутизаторах LB-LINK, CVE-2023-41011 в FiberHome SR1041F и China Mobile HG6543C4, CVE-2024-3721 в TBK DVR и CVE-2025-34037 в устройствах Linksys. Fortinet обнаружила семь жёстко встроенных эксплойтов для саморазмножения: CVE-2014-8361, CVE-2016-20016, CVE-2023-26801, CVE-2023-41011, CVE-2024-3721, CVE-2025-34037 и CVE-2026-87827 для KGUARD DVR. Разница между наборами заметна: в образце Nozomi присутствовала CVE-2016-10372 для Eir D1000, а в перечне Fortinet её место заняла CVE-2026-87827.
Fortinet также зафиксировала начальное проникновение через другие ошибки внедрения команд: CVE-2019-7256 в Linear; CVE-2019-17621, CVE-2022-37055, CVE-2024-23624, CVE-2024-10914, CVE-2024-10915 и CVE-2024-23625 в D-Link; CVE-2021-36380 в Sunhillo SureLine; CVE-2022-26289, CVE-2022-35555, CVE-2024-32281, CVE-2024-32292, CVE-2024-32314, CVE-2024-35340 и CVE-2024-46048 в Tenda; CVE-2022-36553 в Hytec Inter HWL-2511-SS; CVE-2023-1389 в TP-Link; связку CVE-2023-46805 и CVE-2024-21887 в Ivanti Connect Secure и Policy Secure; CVE-2024-7029 в AVTECH; CVE-2025-34035 в EnGenius; CVE-2025-67038 в Lantronix EDS5000; CVE-2026-36356 в MeiG.
Загрузочные shell-скрипты доставляют сборки Cling для ARM, Intel 80386, MIPS R3000, PowerPC и AMD X86-64, поэтому под угрозой оказываются разнородные роутеры, камеры, DVR и прочие доступные из интернета Linux-устройства. Для поиска заражения мало блокировать один адрес: полезнее проверять нулевые STUN transaction ID, нестандартные UDP-регистрации, обращения к 145.249.115[.]184 и необычные ответы от адресов, связанных с . На самих устройствах поводом для проверки служат порт 33957, скрытые файлы .cling, изменения сценариев загрузки и подменённый wget. Закрытие перечисленных CVE и удаление ненужного внешнего доступа лишают Cling основного материала для пополнения ботнета.