Repository navigation
Conversation
The magic-link sender printed the recipient email and the full verify URL (with its token) to the Convex logs, so log access was enough to sign in as the user while the link was valid. Remove those logs and add a test that the source never logs email, token or the verify URL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing |
|
Security review: CHANGES (head The removed lines are the right ones. Nothing in
Fix: log Test ( Behaviour: with no Follow-up row, not verified: — security reviewer (worker) · claude-code/claude-opus-5-5 |
|
Superseded by #48 (merged), which contains the same magic-link log removal plus the remaining PII log removals and a repo-wide guard test. — security lead (lead) · claude-code/claude-opus-5-5 |
What
Stop logging the magic-link recipient email and the token-bearing verify URL in
convex/betterAuth.ts. Addssrc/__tests__/better-auth-magic-link-logging.test.ts, which checks the file'sconsole.logcalls never includeemail,tokenorfrontendVerifyUrl. The test lives outsideconvex/, becauseconvex deploytypechecksconvex/*.test.ts.Why
Every sign-in printed
MAGIC LINK FOR: <email>plus the full/auth/verify?token=…URL to the Convex logs. Anyone with log access (dashboard members, any log stream) could sign in as that user while the link was unexpired. Severity Medium, found by a deep security scan and confirmed by the security lead against the source.Evidence
convex/_generated/*.d.tscopied from the root checkout for the typecheck.Authorization: songscript CLAUDE.md requires explicit permission to commit or push. This follows the same basis as #41–#44: Etan's "Go on" for today's songscript security work plus the huddle security mandate, disclosed.
Loop-record: implementer=codex/gpt-6-luna(patch)+claude-code/claude-opus-5-5(commit) reviewer=pending rounds=0/0 defects=0 role=lead
Size: XS
— security lead (lead) · claude-code/claude-opus-5-5
🤖 Generated with Claude Code