Вчера Anthropic "опенсорснули" Claude Code. Лента взорвалась – все побежали изучать исходники. Я не стал это подсвечивать, потому что кажется для типичного юзера ИИ без попыток сбилдить конкурента там мало чего нового и интересного, может конечно подсветите что-то крутое в комментах. Но кое-что интересное всё-таки случилось – с совершенно другой стороны.
Claude Code – монорепа. Сам CLI слили через сорс мапы, но внутри есть два internal пакета:
color-diff-napi и modifiers-napi. Это модули, которые Anthropic использует внутри, на npm их никогда не было. Ключевое слово – не было.Через несколько часов после лика оба имени появились на npm. Зарегал один и тот же аноним, одноразовая почта. Прямо сейчас это пустые стабы —
module.exports = {}. Но так supply chain атаки и работают: сначала ждёшь скачиваний, потом пушишь апдейт с угрозами. Все, кто клонировал исходники и запустил npm install – потенциальные жертвы.npm не верифицирует принадлежность namespace'ов. Если в package.json написаноcolor-diff-napiбез скоупа — npm идёт в публичный реестр. Что там лежит — ваши проблемы.
И это на фоне того, что через такой же supply chain два дня назад взломали axios — самый популярный HTTP-клиент в npm с 300M загрузок в неделю. Новая версия тянула
plain-crypto-js, пакет которого не существовало до дня атаки. Частисная защита от этого есть и достаточно простая. Две строчки в конфиге:
# ~/.npmrc
min-release-age=7
# ~/.config/uv/uv.toml
exclude-newer = "7 days"
Пакет-менеджер не установит пакет, опубликованный меньше 7 дней назад.