# Крепость из стекла: что исходный код Claude Code рассказал об иллюзии безопасности в ИИ-индустрии
Брюс Шнайер когда-то ввёл понятие «театр безопасности» — зримые, но бесполезные меры защиты, создающие иллюзию контроля. Металлодетекторы в аэропортах, которые пропускают керамические ножи. Камеры наблюдения, за которыми никто не наблюдает. Возможно, в индустрии искусственного интеллекта формируется зеркальный феномен — динамика, у которой пока нет точного имени, хотя паттерн воспроизводится повсеместно. Динамика, в которой то, что выглядит как провал, при ближайшем рассмотрении оказывается чем-то более тревожным, чем просто ошибка.
В начале 2025 года специалисты по кибербезопасности обнаружили, что исходный код Claude Code — CLI-агента, который Anthropic распространяет среди разработчиков, — полностью читаем внутри npm-пакета. Об этом сообщил Гуру Баран на портале Cyber Security News, описав находку как «утечку» проприетарного кода (Guru Baran, «Anthropic's Claude Code Source Code Reportedly Leaked Via Their npm Registry», Cyber Security News, 2025). Не взлом. Не утечка через скомпрометированного сотрудника. Компания, чья публичная идентичность выстроена вокруг безопасности ИИ, сама отправила свой код в публичный реестр, которым ежедневно пользуются миллионы разработчиков. Разрыв между риторикой укреплённых стен и реальностью открытой дистрибуции порождает вопрос, на который у индустрии нет ответа.
Парадокс заслуживает точной формулировки. Cyber Security News описал событие именно как «утечку», подразумевая провал операционной безопасности (Guru Baran, Cyber Security News, 2025). Но npm-пакеты — это, по своему устройству, инспектируемые архивы. Любой разработчик может выполнить команду `npm pack` или скачать tarball и прочитать содержимое. Это базовое свойство экосистемы, задокументированное в официальной документации npm: пакеты распространяются как tarballs с читаемым исходным кодом (npm Docs, «About packages and modules», docs.npmjs.com). Исходный код Claude Code не был секретом в техническом смысле — он был лишь неизученным. «Утечка» — это, строго говоря, обнаружение.
Центральная загадка здесь двойная. Во-первых: осознанно ли Anthropic приняла эту открытость, или культура безопасности компании не распространилась на собственную цепочку поставок программного обеспечения? Во-вторых, и это важнее: перед нами частная ошибка одной компании или структурное свойство всей индустрии, которая раздаёт инструменты ИИ через публичные реестры? Чтобы ответить, нужно понять, как устроен npm и почему ИИ-компании его выбирают.
npm — Node Package Manager — крупнейший в мире реестр пакетов для JavaScript и TypeScript. По данным самого реестра, он содержит более двух миллионов пакетов (npm registry, публичная статистика на npmjs.com, 2025). Каждый пакет — это tarball, по сути zip-архив, который любой может скачать и распаковать. В отличие от скомпилированных бинарных файлов, npm-пакеты обычно содержат читаемый исходный код. Обфускация технически возможна, но применяется редко: она ломает инструменты разработки и противоречит культуре экосистемы.
Эта открытость — палка о двух концах, и история npm знает тому подтверждения. В ноябре 2018 года злоумышленник получил доступ мейнтейнера к популярному пакету event-stream и внедрил вредоносный код, нацеленный на кражу криптовалюты из кошельков Copay. Инцидент был задокументирован в отчёте npm и широко освещался в технической прессе (npm blog, «Details about the event-stream incident», ноябрь 2018; Dominic Tarr, публичное заявление на GitHub, ноябрь 2018). В октябре 2021 года аналогичная атака поразила пакет ua-parser-js, который скачивается миллионы раз в неделю: злоумышленник получил доступ к учётной записи мейнтейнера и внедрил код для майнинга криптовалюты и кражи паролей (GitHub Advisory Database, GHSA-pjwm-rvh2-c87w, октябрь 2021). Оба случая продемонстрировали: прозрачность npm позволяет сообществу проводить аудит, но одновременно обнажает внутреннюю логику для любого наблюдателя.
Anthropic выбрала npm по очевидной причине: Claude Code — это CLI-агент, позволяющий разработчикам взаимодействовать с Claude из терминала. Установка через npm — `npm install -g @anthropic-ai/claude-code` — занимает секунды. Никаких ручных загрузок, никаких проверок лицензий. Но цена низкого трения — полная читаемость кодовой базы.
Anthropic не одинока в этом выборе. Расширим объектив. OpenAI распространяет свои официальные Python и Node SDK через PyPI и npm соответственно — исходный код доступен для чтения в обоих реестрах, что легко проверить, скачав соответствующие пакеты (пакет `openai` на PyPI, pypi.org; пакет `openai` на npm, npmjs.com, 2024–2025). Google следует тому же паттерну со своими инструментами для Gemini. Парадигма ИИ-агентов обостряет проблему многократно.
Дело в том, что агенты вроде Claude Code — это не простые обёртки над API. По данным публикации Cyber Security News, обнаруженный код содержал системные промпты, определения инструментов и логику разрешений (Guru Baran, Cyber Security News, 2025). Это интеллектуальная собственность принципиально иного уровня чувствительности, чем типичный SDK. Открытые системные промпты раскрывают стратегии ограничений — и противник может изучить их, чтобы конструировать обходные манёвры. Открытые схемы инструментов показывают, какие локальные действия агент способен выполнять, — что делает возможными целевые атаки.
Конвенциональное объяснение напрашивается само: халатность. Команда безопасности Anthropic допустила ошибку. Им следовало обфусцировать код, скомпилировать его в бинарный файл или использовать закрытый канал дистрибуции. Это объяснение удобно. Оно льстит нашему желанию найти простого виноватого.
Но оно слишком просто. Anthropic нанимает исследователей безопасности мирового класса. Сооснователь компании Дарио Амодеи неоднократно публично говорил о рисках ИИ и необходимости ответственного развития — в частности, в программном эссе «Machines of Loving Grace» (Dario Amodei, «Machines of Loving Grace», октябрь 2024). Предположение, что компания «забыла» о том, что npm-пакеты читаемы, не выдерживает элементарной проверки на правдоподобие. Стоит отметить: на момент публикации Anthropic не выпустила официального заявления по поводу читаемости кода Claude Code в npm, что само по себе красноречиво — ни опровержения, ни признания проблемы.
«Они [Anthropic] по сути показывают, как устроена колбасная фабрика»— Felipe de Melo, комментарий в техническом обсуждении инцидента, 2025
Механизм, стоящий за этим выбором, можно разложить на три шестерёнки, которые крутятся одновременно — и в противоположных направлениях.
Первая шестерёнка — маховик принятия. Ценность Claude Code зависит от числа разработчиков. Число разработчиков зависит от лёгкости установки. Лёгкость установки требует публичного npm. Публичный npm означает читаемый код. Маховик требует открытости.
Вторая шестерёнка — сигнал безопасности. Бренд Anthropic зависит от воспринимаемой строгости в вопросах безопасности. Строгость подразумевает контролируемую дистрибуцию. Контролируемая дистрибуция означает ограниченный доступ. Ограниченный доступ убивает маховик принятия. Безопасность и рост тянут в противоположные стороны.
Третья шестерёнка — асимметрия противника. Обфускация лишь замедляет злоумышленников — целеустремлённый реверс-инженер декомпилирует всё равно. Но она существенно ухудшает опыт разработчика. Соотношение затрат и выгод обфускации хуже, чем кажется на первый взгляд.
Итог: рациональный актор в позиции Anthropic сделал бы ровно то, что сделала Anthropic — отправил читаемый код и принял открытость, продолжая при этом публично поддерживать язык контроля и безопасности. Три шестерёнки, один невозможный треугольник: принятие, безопасность, секретность — выберите два.
Но рациональное объяснение обнажает более глубокий изъян — не в действиях Anthropic, а в самом дискурсе безопасности ИИ. Исследования в области AI safety фокусируются почти исключительно на выравнивании моделей: RLHF — обучение с подкреплением на основе обратной связи от человека, — конституционный ИИ — метод обучения модели следовать набору этических принципов, — интерпретируемость (Anthropic, «Claude's Character», публикации по Constitutional AI, anthropic.com, 2023–2024). Практически никакого внимания не уделяется цепочке поставок программного обеспечения, через которую возможности ИИ достигают конечных пользователей.
Аналогия проста. Представьте банк, который вкладывает миллионы в бронированное хранилище, но публикует поэтажные планы здания и схемы сигнализации на своём сайте. Хранилище крепко — но чертежи доступны любому, кто хочет его обойти. Аналогия не идеальна: читаемый исходный код — не то же самое, что открытая дверь. Но она точно передаёт суть: инвестиции в защиту обесцениваются, когда архитектура защиты видна противнику.
Обнажённый код Claude Code демонстрирует, что инвестиции Anthropic в безопасность — конституционный ИИ, RLHF, красные команды — не распространяются на уровень инструментов. Модель, возможно, выровнена. Механизм доставки открыт настежь. Определение «безопасности ИИ», принятое в индустрии, слишком узко. Оно останавливается на весах модели и игнорирует всё, что идёт дальше по цепочке.
Что если это не утечка, а видимый симптом структурного противоречия?
А что если код из npm никогда не был утечкой — потому что крепость всегда была сделана из стекла?
Здесь всё встаёт на свои места. Конвенциональная мудрость гласит: Anthropic допустила провал операционной безопасности; исходный код «утёк» через npm, обнажив проприетарную логику ИИ-агента. Компания, сфокусированная на безопасности, должна была это предотвратить. Это знакомая рамка — и она неверна.
Новая рамка — и здесь наконец стоит дать явлению имя: прозрачная крепость (Transparent Fortress). Это архитектура безопасности, в которой компания публично продвигает радикальную ответственность в сфере ИИ, одновременно распространяя свои ключевые инструменты через открытые, инспектируемые реестры пакетов — делая стены крепости видимыми для всех, включая противников. Прозрачная крепость возникает, когда модель роста организации (открытая дистрибуция) структурно противоречит её модели безопасности (контролируемый доступ). Противоречие — не сбой. Это бизнес-модель.
Перечитаем факты через эту линзу. Anthropic не провалила безопасность — она преуспела в дистрибуции, а эти две цели несовместимы. Фрейм «утечки» ошибочен, потому что запечатанного контейнера никогда не существовало. npm-пакеты — это tarballs с читаемым исходным кодом по замыслу; «утечка» из npm — это как «утечка» с полки публичной библиотеки.
Как написал Брюс Шнайер: «Безопасность — это компромисс» (Bruce Schneier, Beyond Fear: Thinking Sensibly About Security in an Uncertain World, 2003). Пять слов — и вся суть. В прозрачной крепости компромисс уже сделан. Риторика безопасности просто не успела это признать.
В рамке прозрачной крепости каждый ранее изложенный факт обретает иной смысл.
Факт первый: дистрибуция через npm. Это не выбор канала — это несущая стена. Убери npm — крепость рухнет, потому что не будет принятия. Оставь npm — крепость прозрачна, потому что не будет секретности. Несущая стена из стекла.
Факт второй: обнажённые системные промпты. Открытая логика ограничений — не случайность, а стоимость бизнес-модели. Каждый ИИ-агент, отправленный через публичный реестр, предъявляет свою архитектуру безопасности тем самым противникам, которым она призвана противостоять.
Факт третий: индустриальный паттерн. Прозрачная крепость — не проблема Anthropic. Это топология индустрии. OpenAI, Google и каждый стартап, раздающий ИИ-агентов через npm и PyPI, обитают в том же стеклянном здании.
Системная модель, которая описывает эту ситуацию, — институциональный двойной зажим. Грегори Бейтсон идентифицировал двойные зажимы в теории коммуникации (Gregory Bateson, Steps to an Ecology of Mind, 1972): ситуация, в которой два базовых обязательства системы генерируют взаимоисключающие требования. Здесь зажим не коммуникационный, а архитектурный: рост и безопасность требуют противоположных решений, и выполнение одного неизбежно подрывает другое.
Три конкретных случая демонстрируют прозрачную крепость в действии.
Первый — Claude Code, Anthropic, 2025. Пакет @anthropic-ai/claude-code содержал необфусцированный TypeScript, включая системные промпты, определения инструментов и логику разрешений. Обнаружено исследователями безопасности, просмотревшими публичный tarball (Guru Baran, Cyber Security News, 2025). Крепость была прозрачной; потребовался лишь взгляд.
Второй — атака на event-stream, 2018. Злоумышленник получил доступ мейнтейнера к популярному npm-пакету и внедрил код для кражи криптовалюты (npm blog, «Details about the event-stream incident», ноябрь 2018). Атака удалась именно потому, что открытость npm предполагала общественный аудит — но никто не проводил аудит. Это прозрачная крепость наизнанку: открытость без инспекции — не безопасность, а иллюзия.
Третий — Python SDK от OpenAI, продолжающаяся ситуация. Официальный пакет `openai` на PyPI содержит читаемый исходный код, включая логику повторных запросов, обработку токенов и определения API-схем (пакет `openai`, pypi.org, 2024–2025). Менее чувствительно, чем системные промпты агента, но демонстрирует тот же структурный паттерн: открытая дистрибуция, брендинг безопасности, инспектируемые внутренности.
Паттерн во всех трёх случаях идентичен: крепость прозрачна, но обитатели — и пресса — продолжают называть открытость «утечкой», сохраняя фикцию стен.
Впрочем, существуют серьёзные контраргументы, и интеллектуальная честность требует их рассмотреть.
«При достаточном количестве глаз все ошибки лежат на поверхности»— Eric Raymond, The Cathedral and the Bazaar, 1999
А аргумент о том, что открытость сама по себе и есть безопасность, заслуживает отдельного разбора — это, пожалуй, сильнейший довод в пользу текущей практики. Открытый исходный код действительно безопаснее в ряде случаев: ядро Linux и библиотека OpenSSL надёжнее именно потому, что их проверяют тысячи глаз. Сообщество находит уязвимости быстрее, чем закрытая команда. В этом смысле Anthropic выигрывает от внешнего аудита логики своего агента — и, возможно, именно этот аудит обнаружил бы критическую ошибку раньше, чем её нашёл бы злоумышленник. Но аналогия с открытым ПО ломается ровно на уровне ИИ-агента. Код агента содержит информацию, релевантную для противника: стратегии ограничений, системные промпты, логику разрешений. Общие библиотеки не содержат такой информации; ИИ-агенты — содержат. Открытость помогает защитникам проводить аудит — но одновременно вручает противнику чертёж для обхода.
Остальные аргументы нельзя отбрасывать — но у них есть фундаментальная проблема: они предлагают ложную дихотомию «секретность или открытость». Критика прозрачной крепости не требует секретности. Она требует архитектурного разделения: отделить критичную для безопасности логику — системные промпты, ограничения — от кода уровня дистрибуции.
Взгляд вперёд усиливает тревогу. По мере того как ИИ-агенты обретают возможности локального исполнения — доступ к файлам, команды оболочки, управление браузером — ставки обнажённой логики агента растут экспоненциально. Прозрачная крепость, которая сегодня лишь неловкость, завтра становится вектором атаки.
Вернёмся к начальному образу. Anthropic — лаборатория, поставившая безопасность во главу угла, — отправляет читаемый код через публичный реестр. То, что выглядело как «утечка», теперь читается как фундаментальная архитектура всей индустрии ИИ-инструментов. Когда в следующий раз компания-лидер ИИ объявит о прорыве в безопасности — конституционный ИИ, интерпретируемость, красные команды — задайте один вопрос: как агент попадает на мою машину и кто ещё может прочитать чертёж? Крепость не была взломана. Она всегда была сделана из стекла — и единственное, что изменилось, это то, что кто-то наконец в неё посмотрел.