Robin Waslander
dafd61b5c1
fix(gateway): enforce caller-scope subsetting in device.token.rotate
...
device.token.rotate accepted attacker-controlled scopes and forwarded
them to rotateDeviceToken without verifying the caller held those
scopes. A pairing-scoped token could rotate up to operator.admin on
any already-paired device whose approvedScopes included admin.
Add a caller-scope subsetting check before rotateDeviceToken: the
requested scopes must be a subset of client.connect.scopes via the
existing roleScopesAllow helper. Reject with missing scope: <scope>
if not.
Also add server.device-token-rotate-authz.test.ts covering both the
priv-esc path and the admin-to-node-invoke chain.
Fixes GHSA-4jpw-hj22-2xmc
2026-03-11 14:16:59 +01:00
..
2026-03-04 10:52:28 +01:00
2026-02-18 01:34:35 +00:00
2026-03-04 10:52:28 +01:00
2026-03-04 10:52:28 +01:00
2026-03-11 02:50:44 +00:00
2026-03-11 02:50:44 +00:00
2026-03-07 10:41:05 +00:00
2026-02-08 23:07:31 -06:00
2026-03-07 10:41:05 +00:00
2026-02-15 13:30:42 +00:00
2026-02-16 01:19:01 +00:00
2026-03-02 06:26:35 +00:00
2026-03-02 06:26:35 +00:00
2026-02-18 01:34:35 +00:00
2026-02-22 14:44:19 +00:00
2026-02-18 12:43:54 +00:00
2026-03-09 04:19:03 +01:00
2026-02-22 14:44:19 +00:00
2026-02-22 12:19:33 +01:00
2026-03-09 18:47:44 -05:00
2026-02-22 12:40:06 -05:00
2026-03-08 09:59:32 -05:00
2026-02-18 01:34:35 +00:00
2026-03-08 14:46:33 -07:00
2026-03-11 14:16:59 +01:00
2026-02-23 20:40:44 +00:00
2026-02-23 14:07:16 -05:00
2026-03-11 01:43:06 +00:00
2026-02-18 23:09:09 +00:00
2026-02-18 01:34:35 +00:00
2026-02-18 01:34:35 +00:00
2026-02-21 19:03:15 -08:00
2026-03-09 21:42:57 +01:00
2026-03-09 21:42:57 +01:00
2026-02-27 12:16:36 +05:30
2026-02-18 01:34:35 +00:00
2026-02-27 12:16:36 +05:30
2026-03-08 22:46:54 +01:00
2026-03-09 21:42:57 +01:00
2026-03-07 10:06:35 -08:00
2026-02-18 19:32:42 +00:00
2026-02-16 01:21:54 +00:00
2026-03-07 10:41:05 +00:00
2026-03-03 02:58:20 +00:00
2026-03-02 19:57:33 +00:00
2026-03-10 14:22:24 +05:30
2026-03-11 01:43:06 +00:00
2026-03-11 02:50:44 +00:00
2026-02-18 01:34:35 +00:00
2026-02-17 15:50:07 +09:00
2026-02-18 00:02:51 -05:00
2026-02-24 15:02:52 +00:00
2026-02-22 23:55:59 -06:00
2026-02-23 00:05:57 -06:00
2026-02-18 01:34:35 +00:00
2026-02-27 12:16:36 +05:30
2026-02-22 08:01:16 +00:00
2026-02-19 13:32:58 +00:00
2026-02-22 17:11:54 +00:00
2026-02-20 20:09:03 -06:00
2026-03-02 08:54:20 +00:00
2026-02-18 01:34:35 +00:00
2026-02-18 01:34:35 +00:00
2026-02-18 01:34:35 +00:00
2026-02-18 01:34:35 +00:00