You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
clean up signature events + harden release workflow (#28)
* fix(security): prevent tag-name command injection in release workflow
The publish job runs with id-token:write (npm OIDC trusted publishing)
and contents:write, and interpolated the attacker-influenceable tag
name (github.ref_name and tag-derived step outputs) directly into run:
scripts. Git ref names permit shell metacharacters, so a tag like
v1.0.0$(...) could execute arbitrary commands with publish privileges.
- Move all tag-derived values to env: blocks, referenced as quoted
shell variables instead of ${{ }} interpolation in run: bodies
- Add strict semver tag validation that fails the workflow before any
untrusted value is used
Actions are already pinned to commit SHAs; npm pin intentionally
omitted (npm@latest retained by decision).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(security): stop exfiltrating raw wallet signatures (C1, CRITICAL)
Autocaptured signature events shipped the produced signature
(state.data) as `signatureHash` to events.formo.so — a replayable
permit/Permit2/SIWE bearer credential, on by default.
Scope: remove `signatureHash` only. The signed message (plaintext or
EIP-712 struct) is still captured as before; no behavior change there
and no new configuration option.
- Remove `signatureHash` end-to-end: SignatureAPIEvent, IFormoAnalytics
/IFormoAnalyticsInstance signature(), FormoAnalytics.signature(),
EventFactory.generateSignatureEvent (+ lib/event/types.ts), and the
WagmiEventHandler mutation handler (no longer reads state.data).
- Add src/__tests__/signature.test.ts: asserts no signatureHash / no
raw-signature value is emitted for signMessage or signTypedData.
deepsec revalidate: CRITICAL other-signature-exfiltration -> fixed.
typecheck/lint clean, 212/212 tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore: drop internal C1 audit-id references from comments and tests
Comment/label-only cleanup, no behavior change. Gates green (212/212).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments