Summary
In affected versions, OpenClaw's optional @openclaw/voice-call plugin Telnyx webhook handler could accept unsigned inbound webhook requests when telnyx.publicKey was not configured, allowing unauthenticated callers to forge Telnyx events.
This only impacts deployments where the Voice Call plugin is installed, enabled, and the webhook endpoint is reachable from the attacker (for example, publicly exposed via a tunnel/proxy).
Affected Packages / Versions
- Package:
openclaw (npm)
- Affected:
<= 2026.2.13
- Fixed:
>= 2026.2.14 (planned)
Details
Telnyx webhooks are expected to be authenticated via Ed25519 signature verification.
In affected versions, TelnyxProvider.verifyWebhook() could effectively fail open when no Telnyx public key was configured, allowing arbitrary HTTP POST requests to the voice-call webhook endpoint to be treated as legitimate Telnyx events.
Fix
The fix makes Telnyx webhook verification fail closed by default and requires telnyx.publicKey (or TELNYX_PUBLIC_KEY) to be configured.
A signature verification bypass exists only for local development via skipSignatureVerification: true, which is off by default, emits a loud startup warning, and should not be used in production.
This requirement is documented in the Voice Call plugin docs.
Fix Commit(s)
29b587e73cbdc941caec573facd16e87d52f007b
f47584fec (centralized verification helper + stronger tests)
Workarounds
- Configure
plugins.entries.voice-call.config.telnyx.publicKey (or TELNYX_PUBLIC_KEY) to enable signature verification.
- Only for local development: set
skipSignatureVerification: true.
Thanks @p80n-sec for reporting.
References
Summary
In affected versions, OpenClaw's optional
@openclaw/voice-callplugin Telnyx webhook handler could accept unsigned inbound webhook requests whentelnyx.publicKeywas not configured, allowing unauthenticated callers to forge Telnyx events.This only impacts deployments where the Voice Call plugin is installed, enabled, and the webhook endpoint is reachable from the attacker (for example, publicly exposed via a tunnel/proxy).
Affected Packages / Versions
openclaw(npm)<= 2026.2.13>= 2026.2.14(planned)Details
Telnyx webhooks are expected to be authenticated via Ed25519 signature verification.
In affected versions,
TelnyxProvider.verifyWebhook()could effectively fail open when no Telnyx public key was configured, allowing arbitrary HTTP POST requests to the voice-call webhook endpoint to be treated as legitimate Telnyx events.Fix
The fix makes Telnyx webhook verification fail closed by default and requires
telnyx.publicKey(orTELNYX_PUBLIC_KEY) to be configured.A signature verification bypass exists only for local development via
skipSignatureVerification: true, which is off by default, emits a loud startup warning, and should not be used in production.This requirement is documented in the Voice Call plugin docs.
Fix Commit(s)
29b587e73cbdc941caec573facd16e87d52f007bf47584fec(centralized verification helper + stronger tests)Workarounds
plugins.entries.voice-call.config.telnyx.publicKey(orTELNYX_PUBLIC_KEY) to enable signature verification.skipSignatureVerification: true.Thanks @p80n-sec for reporting.
References