
Proof-of-concept exploit per CVE-2026-68929, che dimostra l'acquisizione non autenticata di canali WeChat FastGPT tra tenant tramite shareId pubblico, inclusi dirottamento del canale e DoS.
| CVE | CVE-2026-68929 (CVSS 4.0 9.3 Critico) |
| Advisory | GHSA-q4pr-3qpg-9q5v |
| Versioni affette | FastGPT >= 4.14.10, < 4.14.29 e >= 4.15.0, < 4.15.2 |
| Corretta in | 4.14.29 e 4.15.2 (PR #7260) |
| CWE | CWE-862 (Autorizzazione mancante), CWE-306 |
Tre endpoint di gestione sotto /api/support/outLink/wechat/ autorizzano scritture cross-tenant usando solo il shareId fornito nella richiesta — l'identificatore che FastGPT stampa in ogni URL di chat condivisa, iframe ed embed:
logout — protetto da authOutLinkValid, solo un controllo di esistenza, poi cancella il app.token WeChat memorizzato nell'outLink e forza app.status offline. Qualsiasi chiamante anonimo con il shareId pubblico uccide il canale di un team con una sola richiesta.qrcode/generate — stesso gate di sola esistenza; restituisce un QR di login iLink memorizzato in cache sotto publish:wechat:qrcode:<shareId>.qrcode/status — nessuna chiamata di autorizzazione; quando il QR viene confermato scrive il bot_token / accountId / baseUrl dello scanner nell'outLink identificato dal shareId e avvia il polling.Chiunque scansiona il QR può scegliere il bot. Scansionalo con il WeChat dell'attaccante e l'app del team vittima viene collegata al bot dell'attaccante: le risposte della knowledge base privata escono e i punti AI della vittima li pagano.
Zero dipendenze — solo libreria standard Python 3.
# 1. Fingerprint sicuro (shareId inesistente; aspettarsi codice 501 linkUnInvalid
# sulle build vulnerabili, un errore di autenticazione su quelle corrette)
python3 poc.py probe --url http://localhost:3000
# 2. Raccogli un shareId pubblico da un link di chat condivisa / iframe / embed
python3 poc.py harvest --target "https://victim.example/chat/share?shareId=XXXX"
python3 poc.py harvest --target saved-page.html
# 3. DoS con una richiesta — cancella il binding del canale
python3 poc.py dos --url http://localhost:3000 --share-id XXXX
# 4. Hijack del canale — genera victim-qr.png; scansionalo con il WeChat
# dell'ATTACCANTE, lo script fa polling finché il binding non cambia
python3 poc.py hijack --url http://localhost:3000 --share-id XXXX
Distribuisci FastGPT dal template compose ufficiale del repository per la linea 4.15 (deploy/version/v4.15/docker-compose.template.yml), fissando l'immagine a v4.15.1 (l'ultima release vulnerabile di quel ramo). Crea un'app, pubblicala, aggiungi un outLink WeChat nelle impostazioni di pubblicazione, poi esegui probe / dos / hijack contro di essa. Completare una registrazione reale del bot iLink non è necessario per osservare il difetto di autorizzazione — la raggiungibilità anonima degli handler mutanti è il bug.
Solo per test autorizzati e validazione difensiva. Le release corrette sono disponibili da luglio 2026 — se esegui FastGPT con il canale WeChat, aggiorna a >= 4.15.2 (o >= 4.14.29) e ricollega qualsiasi canale che sia rimasto attivo durante la finestra di esposizione.