GHSA-rf88-776r-rcq9

Suggest an improvement
Source
https://github.com/advisories/GHSA-rf88-776r-rcq9
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/03/GHSA-rf88-776r-rcq9/GHSA-rf88-776r-rcq9.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-rf88-776r-rcq9
Aliases
Published
2026-03-27T18:33:43Z
Modified
2026-03-27T18:56:22Z
Severity
  • 8.1 (High) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U CVSS Calculator
Summary
Saloon has insecure deserialization in AccessTokenAuthenticator
Details

Impact

Users of the OAuth2 utilities in Saloon, specifically the AccessTokenAuthenticator class.

Patches

Upgrade to Saloon v4+

Upgrade guide: https://docs.saloon.dev/upgrade/upgrading-from-v3-to-v4

Description

The Saloon PHP library used PHP's unserialize() in AccessTokenAuthenticator::unserialize() to restore OAuth token state from cache or storage, with allowed_classes => true. An attacker who can control the serialized string (e.g. by overwriting a cached token file or via another injection) can supply a serialized "gadget" object. When unserialize() runs, PHP instantiates that object and runs its magic methods (__wakeup, __destruct, etc.), leading to object injection. In environments with common dependencies (e.g. Monolog), this can be chained to remote code execution (RCE). The fix removes PHP serialization from the AccessTokenAuthenticator class requiring users to store and resolve the authenticator manually.

Credits

Saloon thanks @HuajiHD for finding the issue and recommending solutions and @jonpurvis for applying the fix.

Database specific
{
    "cwe_ids": [
        "CWE-502"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-03-27T18:33:43Z",
    "nvd_published_at": "2026-03-26T01:16:28Z",
    "severity": "HIGH"
}
References

Affected packages

Packagist / saloonphp/saloon

Package

Name
saloonphp/saloon
Purl
pkg:composer/saloonphp/saloon

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
4.0.0

Affected versions

v0.*
v0.0.2
v0.0.3
v0.0.4
v0.1.0
v0.2.0
v0.3.0
v0.3.1
v0.4.0
v0.4.1
v0.5.0
v0.6.0
v0.6.1
v0.6.2
v0.6.3
v0.6.4
v0.6.5
v0.6.6
v0.7.0
v0.7.1
v0.7.2
v0.8.0
v0.8.1
v0.8.2
v0.8.3
v0.9.0
v0.9.1
v0.9.2
v0.10.0
v0.11.0
v1.*
v1.0
v1.0.1
v1.1.0
v1.2.0
v1.3.0
v1.3.1
v1.3.2
v1.3.3
v1.4.0
v1.4.1
v1.4.2
v1.4.3
v1.4.4
v1.5
v1.5.1
v1.5.2
v1.5.3
v1.6.0
v1.6.1
v1.6.2
v1.7.0
v1.7.1
v2.*
v2.0.0-beta1
v2.0.0-beta2
v2.0.0-beta3
v2.0.0-beta4
v2.0.0-beta5
v2.0.0-beta6
v2.0.0-beta7
v2.0.0
v2.0.1
v2.0.2
v2.1.0
v2.2.0
v2.3.0
v2.4.0
v2.5.0
v2.6.0
v2.6.1
v2.6.2
v2.6.3
v2.6.4
v2.6.5
v2.6.6
v2.7.0
v2.8.0
v2.8.1
v2.9.0
v2.9.1
v2.9.2
v2.10.0
v2.11.0
v2.12.0
v2.12.1
v3.*
v3.0.0-beta.1
v3.0.0-beta.2
v3.0.0-beta.3
v3.0.0-beta.4
v3.0.0-beta.5
v3.0.0-beta.6
v3.0.0-beta.7
v3.0.0
v3.0.1
v3.0.2
v3.0.3
v3.0.4
v3.0.5
v3.0.6
v3.1.0
v3.2.0
v3.3.0
v3.3.1
v3.3.2
v3.4.0
v3.4.1
v3.4.2
v3.5.0
v3.6.0
v3.6.1
v3.6.2
v3.6.3
v3.6.4
v3.7.0
v3.8.0
v3.8.1
v3.9.0
v3.9.1
v3.10.0
v3.10.1
v3.11.0
v3.11.1
v3.11.2
v3.12.0
v3.13.0
v3.13.1
v3.14.0
v3.14.1
v3.14.2
v3.14.3
v3.15.0

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/03/GHSA-rf88-776r-rcq9/GHSA-rf88-776r-rcq9.json"