В одно январское утро 2026 года исследователь безопасности опубликовал на GitHub proof-of-concept эксплойт. Название было скромным: «OpenClaw WebSocket Origin Bypass». Последствия — нет.
Эксплойт был элегантен в своей простоте. Злоумышленник мог создать вредоносную веб-страницу с несколькими строками JavaScript. Когда пользователь OpenClaw заходил на эту страницу — кликнув по ссылке в письме, в Slack, где угодно — JavaScript молча подключался к локальному экземпляру OpenClaw и выполнял произвольные команды. Без аутентификации. Без каких-либо действий пользователя, кроме клика по ссылке. Полный доступ к машине.
CVE-2026-25253 получил оценку 8.8 по шкале CVSS. Сообщество безопасности назвало его критическим. Команда OpenClaw поначалу назвала его «известным ограничением архитектуры WebSocket». Разрыв между этими двумя описаниями говорит всё о том, как разворачивался кризис.
Хронология событий
Первый CVE появился 14 января. В течение 48 часов сканирование Shodan выявило более 42 000 экземпляров OpenClaw, открыто доступных в интернете — экземпляров, которые мог эксплуатировать любой, знающий URL. Многие были корпоративными развёртываниями с доступом к внутренним файловым системам, базам данных и учётным данным в переменных окружения.
Ещё до выхода первого патча появился CVE-2026-26327: обход аутентификации, позволявший злоумышленникам полностью пропустить вход на открытых экземплярах. Две критические уязвимости за одну неделю, обе эксплуатируемые удалённо, обе затрагивающие те же 42 000+ открытых экземпляров.
Затем возникла ситуация с ClawHub. Исследователи безопасности начали аудит официального маркетплейса навыков OpenClaw и обнаружили, что 41,7% опубликованных навыков содержат уязвимости — одни случайные, другие намеренно внедрённые. Сотни вредоносных навыков были тихо загружены за предшествующие месяцы в ожидании установки пользователями. XDA Developers опубликовал статью «Пожалуйста, перестаньте использовать OpenClaw». Она стала вирусной.
Почему это не просто невезение
Было бы утешительно списать кризис OpenClaw на серию досадных багов — то, что может случиться с любым проектом, исправляется патчами и забывается. Но такая трактовка упускает главное. Эти уязвимости не были случайными. Они были предсказуемым следствием конкретных архитектурных решений, принятых годами ранее, когда OpenClaw был выходным проектом и безопасность не была приоритетом.
Первой проблемой была модель доверия WebSocket. Веб-интерфейс OpenClaw принимает WebSocket-соединения без проверки заголовка Origin. Это хорошо задокументированный класс уязвимостей — Cross-Site WebSocket Hijacking — известный с 2012 года. Исправление простое: проверять заголовок Origin. Но исправление в OpenClaw сломало бы экосистему плагинов, выросшую вокруг разрешительной модели, поэтому оно откладывалось снова и снова, пока не стало CVE-2026-25253.
Второй проблемой были права на уровне ОС. При установке навыка OpenClaw он запускается с теми же правами, что и сам процесс OpenClaw. На большинстве систем это означает возможность читать файлы, обращаться к сети, выполнять команды и читать переменные окружения с API-ключами и паролями. Нет песочницы, нет модели возможностей, нет способа дать навыку доступ только к тому, что ему нужно. Каждый установленный навык неявно доверяется со всем.
Третьей проблемой была цепочка поставок JavaScript. node_modules OpenClaw содержит 1200+ пакетов. Вредоносные навыки на ClawHub эксплуатировали это, публикуя пакеты с именами, похожими на популярные — тайпсквоттинг — и ожидая, пока они будут подтянуты как зависимости. В динамическом языке с большим деревом зависимостей эту атаку практически невозможно предотвратить на уровне платформы.
Как выглядит настоящая безопасность по умолчанию
ZeroClaw был построен с другим набором допущений. Не «добавим безопасность позже», а «ограничения безопасности формируют архитектуру с первого дня».
Система владения Rust устраняет целые классы уязвимостей на этапе компиляции. Переполнения буфера, использование после освобождения, гонки данных — это не баги, которые нужно патчить в коде Rust, это ошибки компиляции. CVE-2026-25253 был возможен в OpenClaw отчасти потому, что динамическая природа JavaScript затрудняет принудительное применение границ безопасности на уровне языка. В Rust эти границы применяются компилятором до того, как код когда-либо запустится.
Сопряжение через шлюз заменяет аутентификацию по паролю для удалённого доступа. Вместо того чтобы открывать порт и надеяться, что пользователи установят надёжные пароли, ZeroClaw требует криптографического сопряжения между клиентом и шлюзом — аналогично тому, как работает сопряжение Bluetooth. Злоумышленник, нашедший ваш экземпляр ZeroClaw в интернете, ничего не сможет с ним сделать без ключа сопряжения.
Модель белого списка с запретом по умолчанию означает, что каждый инструмент, путь к файлу и сетевой эндпоинт должны быть явно разрешены, прежде чем агент сможет получить к ним доступ. Навык, пытающийся читать файлы за пределами своего рабочего пространства, получает ошибку разрешения, а не доступ. Навык, пытающийся делать сетевые запросы к незарегистрированному эндпоинту, блокируется. По умолчанию — никакого доступа; вы предоставляете ровно то, что нужно.
Ограничение рабочего пространства с обнаружением выхода через символические ссылки предотвращает атаки обхода пути. Даже если вредоносный навык пытается выйти из своей песочницы, следуя символическим ссылкам, ZeroClaw обнаруживает и блокирует попытку до того, как будут получены какие-либо данные.
А архитектура единого бинарного файла полностью устраняет поверхность атаки цепочки поставок. Нет node_modules, нет реестра пакетов, нет транзитивных зависимостей для аудита. Вектор атаки, позволивший сотням вредоносных навыков ClawHub, просто не существует.
Переход
Если вы сейчас используете OpenClaw, путь миграции прост. Начните с резервного копирования данных OpenClaw — история разговоров и конфигурация находятся в `~/.openclaw/`, и вам нужна копия перед любыми изменениями.
Установите ZeroClaw одной командой:
```bash curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/main/scripts/bootstrap.sh | bash ```
Сначала запустите инструмент миграции в режиме пробного запуска, чтобы увидеть, что изменится:
```bash zeroclaw migrate openclaw --dry-run ```
Это покажет вам точно, что будет импортировано, что пропущено и что требует ручного внимания. Когда вы будете удовлетворены предварительным просмотром, запустите фактическую миграцию:
```bash zeroclaw migrate openclaw ```
Это перенесёт вашу память, конфигурацию и настройки каналов. Убедитесь, что ваши каналы переподключились, и проверьте простым запросом. Весь процесс обычно занимает менее десяти минут.
Что должна вынести отрасль
Кризис OpenClaw — это не история о провалах безопасности одного проекта. Это история о том, что происходит, когда инфраструктурное программное обеспечение строится с допущениями инструмента для скриптов.
ИИ-агенты обрабатывают учётные данные, обращаются к файловым системам, выполняют код и работают 24/7. Это инфраструктура, а не скрипты. Им нужна та же строгость безопасности, что и веб-серверам, та же архитектурная дисциплина, что и базам данных, и то же моделирование угроз, что и всему остальному, работающему с повышенными привилегиями на вашей машине.
Безопасность нельзя добавить поверх разрешительной архитектуры. Она должна быть заложена с самого начала — в выборе языка, модели разрешений, архитектуре развёртывания и системе плагинов. Когда этого нет, вы получаете 42 000 открытых экземпляров и CVE с оценкой 8.8.
Вопрос не в том, будет ли ваш ИИ-агент атакован. Вопрос в том, была ли ваша архитектура построена так, чтобы выдержать это, когда это произойдёт.