The WhatsApp and Linear bot adapters verify the inbound webhook HMAC signature only when a secret is configured. When the secret environment variable is unset — the default on a fresh install and common in development — verification is skipped entirely and the webhook body is parsed and dispatched as a genuine, trusted event. A remote, unauthenticated attacker who can reach the bot's webhook endpoint can inject arbitrary platform events.
Affected code:
WhatsApp - src/praisonai/praisonai/bots/whatsapp.py
if self._app_secret: gates the ENTIRE check; when falsy the body is
json.loads()'d and dispatched to _process_webhook_data() with no verification.Linear - src/praisonai/praisonai/bots/linear.py
if self._signing_secret: fail-open guard.The _verify_signature implementations themselves are correct (constant-time HMAC-SHA256); the defect is that verification is bypassed when the secret is absent.
Impact:
Proof of concept (bot started without the secret - the default):
curl -X POST...
0.0.10.0.100.0.110.0.120.0.130.0.140.0.150.0.160.0.170.0.18+739 more4.6.59Exploitability
AV:NAC:LPR:NUI:NScope
S:UImpact
C:LI:HA:LCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L