Когда ИИ врёт про пакеты — что делать?
Обсуждали с коллегами статью про то, как ИИ-ассистенты выдумывают пакеты, которые потом устанавливают разработчики. И вдруг поняли: это не про «другую» угрозу — это про то, как мы сами вносим вред в свои проекты, не замечая.
О чём речь и почему это важно для сайта
Речь о том, что ИИ-ассистенты, которые помогают писать код, часто советуют установить пакеты, которых не существует. И если вы скопируете команду pip install из ответа — вы не просто не получите нужную функцию, вы можете запустить на своём сервере чужой код. Это не «взлом» в классическом смысле, но это та же цепочка поставок, только с обманом внутри.
Я считаю это важным, потому что сайт — это не только контент. Это код, который работает. И если он зависит от несуществующего пакета, он может просто не запуститься. А если этот пакет — поддельный, он может быть вредоносным. И это не случай. Это системная уязвимость, которую ИИ сам создаёт.
Как это устроено — что тут вообще происходит
Когда вы просите ИИ написать код, он не проверяет, есть ли такая библиотека в PyPI или npm. Он просто генерирует название, которое звучит правдоподобно. И делает это с уверенностью. Потому что его обучили быть полезным, а не проверяющим.
Злоумышленник может заранее зарегистрировать такие вымышленные названия. А потом, когда кто-то скопирует команду pip install, он получит не то, что нужно, а вредоносный код. Это не сложная атака — это просто эксплуатация доверия к ИИ. И это работает, потому что мы не проверяем, что пишет ассистент.
Как понять, что это касается вашего сайта
Я проверяю это первым делом, когда вижу, что в проекте появилась новая зависимость, которую не помню. Особенно если она появилась после использования ИИ-ассистента.
Запрос в PyPI или npm — это 10 секунд. Если пакет не существует — это красный флаг. Особенно если название звучит как «улучшенная версия» или «оптимальное решение» — это почти всегда галлюцинация. Я вижу такие случаи у клиентов — не раз, а регулярно.
Что с этим делать
Что я делаю в таких случаях — начинаю с резервной копии. Потом удаляю подозрительные зависимости и проверяю, не остался ли в коде импорт из них.
Если пакет не существует — его не должно быть в проекте. Я не просто удаляю — я проверяю, откуда он взялся. Иногда это ИИ. Иногда — копипаста из чата. Важно не просто убрать, а понять, как это туда попало. И закрыть этот вектор.
Что здесь даёт поддержка
На нашей поддержке я закрываю эту задачу не раз, а системно. Мы не ждём, пока что-то сломается. Мы проверяем зависимости, когда что-то меняется. Особенно если в проекте появляется ИИ-ассистент.
Главный итог не в том, что мы починим, а в том, что вы перестанете думать о сайте. Мы работаем с 2002 года, более 100 клиентов по всему миру. Сайт работает — и вы не думаете, что он упадёт.
Попробуйте аудит — проверим, как у вас с зависимостями.