The issue is not deterministic session keys by itself. The exploitable path was accepting externally supplied sessionKey values on authenticated hook ingress, allowing a hook token holder to route messages into chosen sessions.
POST /hooks/agent accepted payload sessionKey and used it directly for session routing.agent:main:dm:<peerId>) were often derivable from known metadata, making targeted routing practical when request-level override was enabled.sessionKey values.Without those preconditions, deterministic key formats alone do not provide access.
openclaw >= 2.0.0-beta3 and < 2026.2.12openclaw >= 2026.2.12OpenClaw now uses secure defaults for hook session routing:
POST /hooks/agent rejects payload sessionKey unless hooks.allowRequestSessionKey=true.hooks.defaultSessionKey for fixed ingress routing.hooks.allowedSessionKeyPrefixes to constrain explicit routing keys.{
"hooks": {
"enabled": true,
"token": "${OPENCLAW_HOOKS_TOKEN}",
"defaultSessionKey": "hook:ingress",
"allowRequestSessionKey": false,
"allowedSessionKeyPrefixes": ["hook:"]
}
}
Thanks @alpernae for responsible reporting.
{
"cwe_ids": [
"CWE-330",
"CWE-639"
],
"github_reviewed": true,
"github_reviewed_at": "2026-02-17T16:43:34Z",
"nvd_published_at": null,
"severity": "HIGH"
}