Context
The SubscriptionManager currently deployed to Base Sepolia predates the security hardening landed in 66147b5:
- Period-bound renewal salts (
InvalidSalt) — the deployed version allows one payer signature to be replayed for every remaining period
- Per-subscription held-balance escrow accounting +
sweepCancelledSubscription
- OZ
ECDSA.recover
AgentReputation / CrossChainSettlement extension deployments should be refreshed alongside if addresses are published.
Steps
forge script script/DeployExtensions.s.sol --rpc-url base_sepolia --broadcast (deployer key + gas — maintainer action)
- Verify on Basescan
- Update README addresses +
contracts/deployments/base-sepolia.json + service envs
- Add addresses to the weekly
sepolia-smoke.yml checks
Acceptance criteria
- New addresses verified + smoke-tested; README/docs consistent
- Old address documented as deprecated/vulnerable
Severity: the replay hole is live on testnet (no real funds, but demos and docs point at it).
Context
The SubscriptionManager currently deployed to Base Sepolia predates the security hardening landed in
66147b5:InvalidSalt) — the deployed version allows one payer signature to be replayed for every remaining periodsweepCancelledSubscriptionECDSA.recoverAgentReputation / CrossChainSettlement extension deployments should be refreshed alongside if addresses are published.
Steps
forge script script/DeployExtensions.s.sol --rpc-url base_sepolia --broadcast(deployer key + gas — maintainer action)contracts/deployments/base-sepolia.json+ service envssepolia-smoke.ymlchecksAcceptance criteria
Severity: the replay hole is live on testnet (no real funds, but demos and docs point at it).