
Когда ИИ ошибся в диагнозе: CVE-2025-66478
Дата публикации
🔄 Пост исправлен
Первоначально опубликован 2 февраля 2026 года
Этот пост изначально назывался "Проблемы с начальной миграцией PayloadCMS" и обвинял наши проблемы с развёртыванием в конфигурации PayloadCMS и проблемах схемы. Этот диагноз был произведён с помощью ИИ-исследования и был полностью неверен.
Настоящей причиной был CVE-2025-66478 — критическая (CVSS 10.0) уязвимость RCE в протоколе React Server Components Next.js. Второе приложение без какого-либо PayloadCLS столкнулось с той же проблемой днём позже. Это и подтвердило.
Когда ИИ ошибся в диагнозе
У нас были проблемы с развёртыванием. Мы использовали ИИ для помощи в диагностике. Он выдал уверённый, детальный, технически правдоподобный анализ первопричины, обвиняющий PayloadCMS. Мы опубликовали его без независимой проверки чего-либо из этого. Он был полностью неверен.
Этот пост является исправлением — и case study, почему анализ инцидентов, сгенерированный ИИ, должен рассматриваться как гипотеза, а не как вывод.
⚠️ Инцидент 3 января
Наш более ранний пост — Когда AI-разрушение ломает всё — описывал майнер Monero, обнаруженный на production 3 января 2026 года. Тот пост также обвинял PayloadCMS (пустая база данных, обход аутентификации). Учитывая, что CVE-2025-66478 была активна с 4 декабря и тот диагноз следовал тому же процессу с помощью ИИ, очень вероятно, что он затронут той же ошибкой. Мы ещё не переисследовали этот пост.
Что сказал нам ИИ
Первоначальный диагноз заключал:
❌ Диагноз ИИ — Всё неверно
- PayloadCMS был развёрнут без запуска миграций базы данных
- Пустая база данных оставила систему аутентификации в постоянном состоянии обхода
- Утилита
canAccessAdminразрешала доступ, когда пользователей не существует - Сбои отображения схемы вызвали каскадные проблемы развёртывания
- Пользовательские типы полей без прямых эквивалентов сломали миграцию
Каждый пункт был заявлен с уверенностью. Анализ включал правдоподобную временную шкалу, специфику на уровне кода и практические рекомендации. Он читался как тщательный постмортем. Ничего из этого не было проверено на то, что действительно произошло.
Что на самом деле произошло
День спустя после наших проблем второе приложение — которое никогда не использовало PayloadCMS — испытало тот же класс сбоев. Этот единственный факт опроверг весь первоначальный диагноз.
Истинной причиной был CVE-2025-66478.
🚨 CVE-2025-66478
CVSS 10.0 · Критически · Без обхода
Протокол React Server Components (RSC) в Next.js позволял недоверенным входам влиять на пути выполнения на стороне сервера. Злоумышленники могли создавать запросы, которые вызывали выполнение произвольного кода на пропатченных приложениях App Router.
- Upstream CVE: CVE-2025-55182 (React)
- GitHub Advisory: GHSA-9qr9-h5gf-34mp
- Область: Только App Router. Pages Router и Edge Runtime не затронуты.
- Обход: Нет. Обновление обязательно.
Хронология
📜 Хронология CVE-2025-66478
- 3 декабря — Next.js публикует совет по безопасности. Пропатченные версии доступны немедленно.
- 4 декабря — Критическое окно экспозиции открывается в 13:00 PT. Любое непропатченное приложение App Router доступно для эксплуатации с этого момента.
- 6 декабря — Выпущен автоматический инструмент исправления
fix-react2shell-nextот Vercel. - 6 декабря — Команда Next.js рекомендует вращать все секреты на любом приложении, которое было онлайн и непропатчено после 4 декабря.
Затронутые версии
⚠️ Уязвимые
- Next.js 15.x — все минорные версии
- Next.js 16.x — все минорные версии
- Next.js 14.3.0-canary.77 и более поздние canary-релизы
✓ Не затронуты
- Next.js 13.x
- Next.js 14.x стабильные релизы
- Приложения Pages Router
- Edge Runtime
Исправление
# Пропатчить до последней исправленной версии для вашего минора:
npm install next@15.0.5 # 15.0.x
npm install next@15.1.9 # 15.1.x
npm install next@15.2.6 # 15.2.x
npm install next@15.3.6 # 15.3.x
npm install next@15.4.8 # 15.4.x
npm install next@15.5.7 # 15.5.x
npm install next@16.0.7 # 16.0.x
# Или использовать автоматический инструмент:
npx fix-react2shell-next
⚠️ Вращайте свои секреты
После патча и повторного развёртывания немедленно вращайте все секреты приложения. Если ваше приложение было онлайн и непропатчено после 4 декабря в 13:00 PT, считайте, что все секреты скомпрометированы. Приоритируйте учётные данные базы данных и API-ключи в первую очередь.
Извлечённые уроки
✅ Что мы вынесли из этого
Диагностика с помощью ИИ
- Беглый, детальный вывод не является доказательством правильности
- ИИ сконструирует правдоподобный нарратив из неполного контекста — относитесь к нему как к гипотезе
- Всегда проверяйте выводы ИИ против наблюдаемых фактов перед публикацией
- Второй инцидент — самый быстрый способ опровергнуть теорию одного приложения
Гигиена безопасности
- Подпишитесь на upstream advisories — Next.js, React и ваш runtime
- Когда появляются неожиданные проблемы развёртывания, сначала проверьте базы CVE
- Автоматические инструменты исправления существуют не просто так — используйте их
- Вращайте все секреты после любого подтверждённого RCE, даже если точный вектор всё ещё неясен