BETTER-AUTH · GHSA-g95c-wqvr-8c3j · Package
FIX → 1.8.0-beta.5 +1
A role that holds the user:update permission in the better-auth admin plugin can set another user's phone number and mark it verified. The attacker can then sign in to that account with a phone OTP and take over its session, including accounts with more privileges.
first public Nov 3, 2026 · 1 source
Could this affect your app?
Free first check from your website. Connect your repo for the full answer.
You are affected only if you use both the admin plugin and the phone number plugin from better-auth, and a role other than the full admin role holds the user:update permission. If only full administrators can update users, you are not affected. Custom access control setups that grant user:update to limited roles are the ones to review.
Not affected if admin-plugin-disabled, only-full-admin-can-update-users, phone-plugin-disabled
Who cares auth, better-auth, node, self-hosted
npm ls better-auth.user:update.Upgrade to 1.8.0-beta.5 +1
You are affected if all of these are true:
better-auth.user:update permission.You are not affected if only full administrators can update users.
The admin update-user endpoint requires a separate permission to change a user's email address, but not to change their phone number. A role allowed to edit user profiles could set another user's phone number and mark it as verified.
A user with a limited role that holds user:update can put their own phone number on another user's account and then sign in to that account with a phone OTP. This gives them the other user's session, including accounts with more privileges than their own.
Upgrade better-auth to 1.7.16, or to 1.8.0-beta.5 on the beta line.
Changing phoneNumber or phoneNumberVerified through now needs the new permission. The default admin role has it. If you use custom access control, add to your statements and grant it to the roles that should change phone numbers.
Check it with your coding agent
It reads this page and tells you if your code is affected.
Are you affected?
Ask from here. InfraStack checks the affected versions against your stack and answers in your inbox.
InfraStack checks the affected versions against your stack and answers in Slack, with the evidence and the fix.
better-auth to 1.7.16 on the 1.7 line.better-auth to 1.8.0-beta.5 on the beta line.update-useruser:set-phoneset-phoneRemove user:update from roles that should not change sign-in details, or reject phoneNumber and phoneNumberVerified in requests to /admin/update-user before they reach Better Auth.
/admin/update-user checked user:set-email before changing the email address, but passed phone fields through with only user:update. It now checks user:set-phone when either phone field is present.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-938BEJ5J.