fix(ws): reject tokens with NaN timestamps in verifyWsToken#168
fix(ws): reject tokens with NaN timestamps in verifyWsToken#1680x-SquidSol wants to merge 1 commit intodcccrypto:mainfrom
Conversation
parseInt(timestampStr, 10) returns NaN for non-numeric strings. Without a guard, all subsequent comparisons (now - NaN > X) evaluate to false, allowing the time check to pass. While the HMAC check still prevents forgery, this is a defense-in-depth gap — reject malformed timestamps explicitly before reaching the time comparison. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 13 minutes and 45 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
parseInt(timestampStr, 10)returnsNaNfor non-numeric strings. Without a guard,now - NaN > 300000evaluates tofalse, allowing the time check to pass. While the subsequent HMAC check still prevents forgery (attacker needs the secret), this is a defense-in-depth gap.Number.isNaN(timestamp)guard immediately afterparseInt, rejecting malformed timestamps before reaching the time comparison.Changes
src/routes/ws.ts: 1 line added afterparseInt— early return on NaNTest plan
tsc --noEmitpassesvitest runpasses (186/186 tests)🤖 Generated with Claude Code