Баг в Bun привёл к утечке кода Claude Code: как 20‑дневный баг стал фатальным

290
Баг в Bun привёл к утечке кода Claude Code: как 20‑дневный баг стал фатальным

31 марта 2026 года в npm появился source‑map, раскрывающий более полумиллиона строк кода Claude Code. Инцидент связан с багом Bun за 20 дней и ошибкой публикации.

В декабре 2025 года Anthropic объявила о покупке Bun, JavaScript‑рантайма, разработанного Джаредом Самнером. После покупки основной продукт компании, Claude Code, был пересобран под Bun, а Самнер стал частью команды.

Баг в Bun, оставшийся незамеченным

11 марта 2026 года в баг‑трекере Bun появился тикет #28001. Он фиксировал, что даже при development: false в Bun.serve() генерируются source‑map‑файлы, хотя документация требует их отключения в продакшн‑режиме.

На момент утечки тикет оставался открытым, а исправление не вышло.

Как source map попал в npm‑пакет

Claude Code собирается в один бандл через встроенный в Bun бандлер. В процессе публикации не использовались ни .npmignore, ни ограничение поля files в package.json. Поэтому файл cli.js.map оказался в артефакте, который затем был загружен в npm. Даже если бы баг в Bun был исправлен, отсутствие фильтрации оставило бы возможность утечки.

Что раскрыла утечка

Внутри карты кода обнаружены несколько малоизвестных модулей:

  • KAIROS — автономный агент, подписывающийся на GitHub‑вебхуки и собирающий “сновидения” о работе проекта.
  • Undercover Mode — режим, позволяющий Claude скрывать свою ИИ‑натуру в коммитах.
  • ANTI_DISTILLATION — система, вставляющая фейковые инструменты в API‑запросы для “отравления” обучающих наборов конкурентов.
  • BUDDY — виртуальный питомец в терминале с RPG‑характеристиками.
  • Список внутренних кодовых имён моделей (Capybara, Fennec, Numbat) и более 40 фича‑флагов.

Реакция Anthropic и отклик сообщества

Пакет был удалён в течение нескольких часов, а компания назвала инцидент «человеческой ошибкой при упаковке релиза», а не нарушением безопасности. Формального постмортема не последовало. На GitHub разработчик Сигрид Джин выпустила чисто‑комнатный порт Claude Code на Python под именем claw-code, который быстро набрал десятки тысяч звёзд.

Практические рекомендации

  1. Запускайте npm pack --dry-run перед публикацией, чтобы увидеть содержимое пакета.
  2. Исключайте все *.map файлы через .npmignore или явно указывайте разрешённые файлы в поле files package.json.
  3. Следите за тикетом #28001 в репозитории Bun и обновляйте зависимости до версии с исправлением.
  4. Добавьте проверку артефактов в CI/CD, гарантируя отсутствие source‑map‑файлов в финальном билде.

Итоги

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

Последнее изменение:

0 Комментарии
Популярные
Новые Старые
Inline Feedbacks
Посмотреть все комментарии