yii 1.1.29并非官方版本,无cve和poc;其rce说法不成立,但yii 1.1系列存在反序列化风险,主要涉及unserialize调用、cookie签名绕过及日志组件魔术方法链。

Yii 1.1.29 本身不是官方发布的正式版本,Yii 1.1 系列的最后一个稳定版是 1.1.28(发布于2021年3月),而 1.1.29 并未在 Yii 官方 GitHub Releases 或 Packagist 中存在。因此,“Yii 1.1.29 RCE 漏洞”这一说法缺乏权威依据,目前没有 CVE 编号、无公开 PoC、无厂商通告指向该版本存在独立 RCE 漏洞。
但需注意:Yii 1.1 系列历史上确实存在多个反序列化相关风险点,尤其集中在以下场景,虽不构成“默认 RCE”,但在特定配置+可控输入下可能被组合利用:
1. CApplication::run() 中的 unserialize() 间接调用风险
某些老模块(如自定义缓存组件、日志处理器、第三方扩展)若对用户输入(如 Cookie、GET 参数、session 数据)未经校验直接 unserialize(),且环境启用了危险类(如 CFileLogRoute、CPhpAuthManager 的子类或用户自定义类),就可能触发 POP 链。
✅ 临时缓解:全局禁用所有不可信来源的反序列化
- 检查代码中所有
unserialize(调用,确认参数是否来自$_GET、$_COOKIE、$_SESSION或数据库字段;- 对必须反序列化的数据,改用
json_decode()+ 白名单类型校验;- 若使用 Memcache/Redis 存储 session,确保
session.serialize_handler = php(而非php_serialize),并避免存储原始对象。
2. Cookie 签名绕过导致反序列化入口“复活”
Yii 1.1 默认启用 enableCookieValidation,但若 cookieValidationKey 泄露(如硬编码在 config、被 Git 提交、备份文件泄露),攻击者可伪造合法签名的 Cookie,将恶意序列化数据注入 CWebUser::loginByCookie() 或自定义认证逻辑。
✅ 临时缓解:切断 Cookie 反序列化通路
- 立即轮换
cookieValidationKey,确保其为 32 字节以上强随机字符串,绝不写死在代码中;- 在
main.php配置中显式设置:'components' => [ 'request' => [ 'enableCookieValidation' => true, 'cookieValidationKey' => '', // 务必填入新密钥 ], ],- 若业务无需自动登录,可注释或移除
CWebUser::autoRenewCookie相关逻辑。
3. 日志/缓存组件中的危险魔术方法链(低概率,需配合 SSRF 或本地文件写入)
例如旧版 CFileLogRoute 在 init() 中若 $logPath 可控,可能触发路径遍历;极少数定制扩展中存在 __wakeup() 调用 eval() 或 create_function()。
✅ 临时缓解:最小化组件权限与输入信任
- 关闭非必要日志路由(如
CProfileLogRoute、CWebLogRoute);- 将
runtime/目录设为不可执行(Linux 下chmod -x runtime);- 所有日志路径、缓存路径使用绝对路径常量(如
YII_PATH.'/runtime/cache'),避免拼接用户输入。
不复杂但容易忽略











