yii 2.0.52已修复cve-2020-15148反序列化漏洞,无需额外补丁;若为2.0.37及更早版本,必须升级至2.0.38及以上(如2.0.52)才能消除远程代码执行高危风险。

Yii2.0.52本身是已修复CVE-2020-15148等反序列化漏洞的稳定版本,不存在需额外安装“补丁”的情况;若当前运行的是2.0.37或更早存在漏洞的版本,必须升级至2.0.38及以上(如2.0.52)才能消除风险,不能通过打补丁方式修复。
确认当前Yii版本
进入项目根目录,执行:php composer.phar show yiisoft/yii2 或直接查看 vendor/yiisoft/yii2/VERSION 文件内容。
若输出为 2.0.37 或更低,且未手动禁用 unserialize() 调用路径,则【该环境存在远程代码执行高危漏洞】,必须升级。
升级到Yii 2.0.52(推荐方式)
方法一:指定版本号升级
运行:composer require yiisoft/yii2:"~2.0.52" → 等待依赖解析完成 → Composer自动更新 composer.lock 并替换 vendor/yiisoft/yii2 目录。
方法二:强制刷新全部依赖(适用于锁定版本混乱场景)
先删除 vendor 目录和 composer.lock → 执行 composer install → 此时会按 composer.json 中约束拉取满足条件的最新兼容版,若约束为 "yiisoft/yii2": "~2.0.0",默认即会装入2.0.52。
验证修复是否生效
第一步:检查 vendor/yiisoft/yii2/framework/base/ErrorHandler.php 是否仍存在 unserialize() 直接调用 —— 2.0.38起已移除该危险调用。
第二步:确认 BatchQueryResult::__destruct() 方法中不再触发可控 $this->_dataReader->close() 路径,该逻辑在2.0.38中已被重构剔除。
第三步:访问任意带 r= 参数的URL,尝试传入恶意序列化字符串(如 ?r=site/index&test=O:30:"yii\rest\CreateAction":0:{}),响应应为400或500错误,而非成功执行任意PHP代码。











