CVE-2026-33942Saloon是一个用于构建API集成的PHP库。在4.0.0版本之前,其AccessTokenAuthenticator类在恢复OAuth令牌状态时使用了PHP的unserialize()函数,且未限制允许的类。攻击者若能控制序列化字符串(例如通过覆盖缓存令牌文件或利用其他注入点),可利用此反序列化漏洞注入恶意对象。在存在常见依赖(如Monolog)的环境中,攻击者可利用反序列化链实现远程代码执行(RCE),对系统安全构成严重威胁。
该漏洞的根本原因是不安全地使用了PHP的unserialize()函数。具体而言,受影响版本的AccessTokenAuthenticator::unserialize()方法在从缓存或存储恢复令牌时,调用了unserialize()并设置allowed_classes => true。这使得实例化任意类成为可能。攻击者首先需要控制被反序列化的数据内容,例如通过篡改缓存文件。随后,攻击者构造包含恶意“Gadget”链的序列化Payload。当应用处理该数据时,PHP会自动触发Payload中对象的魔术方法(如__wakeup或__destruct)。结合项目中的依赖库(如Monolog),攻击者可以构建POP链,将对象操作导向危险的系统函数,从而导致远程代码执行。版本4.0.0通过移除自动序列化机制修复了此问题。