безопасность

Когда ИИ ошибся в диагнозе: 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, даже если точный вектор всё ещё неясен
#security#nextjs#cve#ai#incident#payloadcms