
Proof-of-concept эксплойт для CVE-2026-68929, демонстрирующий неаутентифицированный межтенантный захват WeChat-каналов FastGPT через публичный shareId, включая перехват канала и DoS.
| CVE | CVE-2026-68929 (CVSS 4.0 9.3 Critical) |
| Advisory | GHSA-q4pr-3qpg-9q5v |
| Затронуто | FastGPT >= 4.14.10, < 4.14.29 и >= 4.15.0, < 4.15.2 |
| Исправлено | 4.14.29 и 4.15.2 (PR #7260) |
| CWE | CWE-862 (Missing Authorization), CWE-306 |
Три управляющих эндпоинта в /api/support/outLink/wechat/ авторизуют
записи между тенантами, используя только переданный в запросе shareId —
идентификатор, который FastGPT встраивает в каждый URL общего чата, iframe и embed:
logout — защищён authOutLinkValid, только проверкой существования, после чего
стирает сохранённый WeChat app.token outLink'а и принудительно переводит app.status
в офлайн. Любой анонимный вызывающий с публичным shareId убивает канал команды одним запросом.qrcode/generate — та же проверка только на существование; возвращает QR для входа iLink,
кэшируемый под publish:wechat:qrcode:<shareId>.qrcode/status — вообще без вызова авторизации; при подтверждении QR записывает
bot_token / accountId / baseUrl сканера в outLink, определённый по shareId, и начинает опрос.Кто сканирует QR — тот и выбирает бота. Сканируйте его своим WeChat, и приложение команды-жертвы подключается к боту атакующего: ответы из приватной базы знаний утекают наружу, а ИИ-баллы жертвы оплачивают это.
Ноль зависимостей — только стандартная библиотека Python 3.
# 1. Безопасная проверка (несуществующий shareId; ожидайте код 501 linkUnInvalid
# на уязвимых сборках, ошибку авторизации на исправленных)
python3 poc.py probe --url http://localhost:3000
# 2. Соберите публичный shareId из ссылки общего чата / iframe / embed
python3 poc.py harvest --target "https://victim.example/chat/share?shareId=XXXX"
python3 poc.py harvest --target saved-page.html
# 3. DoS одним запросом — стирает привязку канала
python3 poc.py dos --url http://localhost:3000 --share-id XXXX
# 4. Захват канала — создаёт victim-qr.png; сканируйте его WeChat АТАКУЮЩЕГО,
# скрипт опрашивает, пока привязка не переключится
python3 poc.py hijack --url http://localhost:3000 --share-id XXXX
Разверните FastGPT из официального compose-шаблона репозитория для ветки 4.15
(deploy/version/v4.15/docker-compose.template.yml), зафиксировав образ
на v4.15.1 (последний уязвимый релиз этой ветки). Создайте приложение,
опубликуйте его, добавьте WeChat outLink в настройках публикации, затем запустите probe /
dos / hijack против него. Для наблюдения дефекта авторизации не требуется
завершать реальную регистрацию iLink-бота — сама анонимная доступность
изменяющих обработчиков и есть уязвимость.
Только для авторизованного тестирования и проверки защиты. Исправленные релизы доступны с июля 2026 — если вы запускаете FastGPT с WeChat-каналом, обновитесь до >= 4.15.2 (или >= 4.14.29) и перепривяжите любой канал, существовавший в окне воздействия.