Credential references: check driver create/rename against other drivers' instance-named secrets #848
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
From the #835 security review (L-3). The per-instance rule refuses a reference whose first segment names ANOTHER same-type driver's id or name. Create/rename is not checked against references already stored on other drivers, so:
gw,apikeyetc. makes every same-type driver whose shared secret uses that segment fail its next deploy (any Designer can do this, intentionally or not);Fix: at create/rename (
RawTreeService.CreateDriverAsync/UpdateDriverAsync), warn or refuse when the new name/id equals a first segment used by another same-type driver's stored reference.Fixed (
d08e59ee, review fixesd68dff09/ea156265). Pushed to master in03e51457. Driver create, /raw rename and the config-modal update refuse (a) a name equal to the instance segment of asecret:/env:reference stored on another same-type driver ("claim", message names driver/id/device/field, never a value) and (b) renaming a driver off a name its own references use unless they also name its id or the new name ("pin"; case-only renames pass; one modal save may re-point and rename together). Id-shaped names (DRV,DRV-<12 hex>) are refused. Residuals documented in docs/security.md: deleting a driver frees its id/name (rotate its secrets); a rename racing a device save that adds a reference to the old name is not tied together (covered by "may author ⇒ may redirect", audited). Independent security review: no bypass.