漏洞概述 Laravel Passport 框架中的 方法存在安全漏洞。该方法在验证令牌时,直接将 传递给 进行用户查找,而未验证该 ID 是否确实属于一个真实用户。 攻击者可利用 MySQL 的隐式类型转换特性进行利用:当使用 令牌时,OAuth 服务器将 JWT 的 声明设置为客户端的 UUID。如果数据库用户表的主键是整数,MySQL 会将 UUID 隐式转换为整数(例如 UUID 被转换为 ),导致 返回数据库中 ID 为 19 的真实用户。这使得任何 (guest) 令牌都能静默地认证为真实用户,导致用户冒充和数据泄露。 影响范围 Passport Version: 13.x (latest) Laravel Version: 11.x PHP Version: 8.2+ Database Driver: MySQL 8.x 修复方案 修复方案是在 的 方法中增加逻辑,比较 和 。如果两者匹配(或 为空),说明这是 令牌(没有关联用户),应直接返回 null 阻止认证。 修复代码块: