Laravel10中league/oauth2-server无法更新(CVE-2023-37260)求助
问题:Laravel Passport依赖的league/oauth2-server无法更新至安全版本8.5.x
环境与漏洞背景
- 使用Laravel 10框架,通过
laravel/passport组件处理OAuth2认证 - 依赖的
league/oauth2-server存在CVE-2023-37260安全漏洞:传入无效密码短语时,密钥会暴露在异常信息中,受影响版本范围为>=8.3.2且<8.5.3
当前配置信息
composer.lock中相关依赖片段
"require": { "league/oauth2-server": "^8.2", // 目标更新至8.5 },
composer.json中相关依赖
"require": { "php": "^8.0.2", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^10.0", "laravel/passport": "^11.8", "laravel/tinker": "^2.7" },
尝试操作与问题
已执行composer update(删除composer.lock文件后),但league/oauth2-server版本仍未更新到安全的8.5.x版本。
原因分析
核心原因是Laravel Passport v11.8的依赖约束限制了league/oauth2-server的版本范围。
Passport v11.x的官方依赖配置中,对league/oauth2-server的约束为^8.2但实际上限被限制在<8.5——因为该版本的Passport未适配league/oauth2-server 8.5.x版本的API变更。Composer在处理依赖时会严格遵循上层包(Passport)的版本约束,因此即使删除lock文件执行更新,也无法安装超出Passport允许范围的league/oauth2-server版本。
解决方案
- 升级Laravel Passport到兼容版本:Passport v12.x已将
league/oauth2-server的依赖约束更新为^8.5,完全兼容安全版本。修改composer.json中Passport的版本为^12.0,执行composer update即可自动更新league/oauth2-server到8.5.x。 - 强制指定版本(临时方案,需测试):如果暂时无法升级Passport,可以在
composer.json中直接添加league/oauth2-server的明确版本约束,覆盖Passport的限制:
注意:此方式可能引发Passport与"require": { // 保留原有依赖 "league/oauth2-server": "8.5.3" }league/oauth2-server的兼容性问题,必须完成充分功能测试后再上线。
内容的提问来源于stack exchange,提问作者Carlson
相关产品推荐
相关产品推荐

