VYPR
Moderate severityNVD Advisory· Published Feb 23, 2022· Updated Apr 23, 2025

Missing server signature validation in OctoberCMS

CVE-2022-23655

Description

Octobercms is a self-hosted CMS platform based on the Laravel PHP Framework. Affected versions of OctoberCMS did not validate gateway server signatures. As a result non-authoritative gateway servers may be used to exfiltrate user private keys. Users are advised to upgrade their installations to build 474 or v1.1.10. The only known workaround is to manually apply the patch (e3b455ad587282f0fbcb7763c6d9c3d000ca1e6a) which adds server signature validation.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
october/systemPackagist
>= 1.1.0, < 1.1.111.1.11
october/systemPackagist
< 1.0.4751.0.475

Affected products

1

Patches

1
e3b455ad5872

Checks gateway server has a valid signature

https://github.com/octobercms/octoberSam GeorgesFeb 20, 2022via ghsa
1 file changed · +38 2
  • modules/system/classes/UpdateManager.php+38 2 modified
    @@ -8,6 +8,7 @@
     use Cache;
     use Schema;
     use Config;
    +use Request;
     use ApplicationException;
     use Cms\Classes\ThemeManager;
     use System\Models\Parameter;
    @@ -885,6 +886,10 @@ public function requestServerData($uri, $postData = [])
                 throw new ApplicationException(Lang::get('system::lang.server.response_invalid'));
             }
     
    +        if (!$this->validateServerSignature($resultData, $result->headers['Rest-Sign'] ?? '')) {
    +            throw new ApplicationException(Lang::get('system::lang.server.response_invalid') . ' (Bad signature)');
    +        }
    +
             return $resultData;
         }
     
    @@ -963,12 +968,13 @@ protected function createServerUrl($uri)
          */
         protected function applyHttpAttributes($http, $postData)
         {
    -        $postData['protocol_version'] = '1.2';
    -        $postData['client'] = 'october';
    +        $postData['protocol_version'] = '1.3';
    +        $postData['client'] = 'October CMS';
     
             $postData['server'] = base64_encode(json_encode([
                 'php'   => PHP_VERSION,
                 'url'   => Url::to('/'),
    +            'ip'    => Request::ip(),
                 'since' => PluginVersion::orderBy('created_at')->value('created_at')
             ]));
     
    @@ -1070,4 +1076,34 @@ protected function printMessages()
                 }
             }
         }
    +
    +    /**
    +     * validateServerSignature checks the server has provided a valid signature
    +     *
    +     * @return bool
    +     */
    +    protected function validateServerSignature($data, $signature)
    +    {
    +        if (!$signature) {
    +            return false;
    +        }
    +
    +        $signature = base64_decode($signature);
    +
    +        $pubKey = '-----BEGIN PUBLIC KEY-----
    +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt+KwvTXqC8Mz9vV4KIvX
    +3y+aZusrlg26jdbNVUuhXNFbt1VisjJydHW2+WGsiEHSy2s61ZAV2dICR6f3huSw
    +jY/MH9j23Oo/u61CBpvIS3Q8uC+TLtJl4/F9eqlnzocfMoKe8NmcBbUR3TKQoIok
    +xbSMl6jiE2k5TJdzhHUxjZRIeeLDLMKYX6xt37LdhuM8zO6sXQmCGg4J6LmHTJph
    +96H11gBvcFSFJSmIiDykJOELZl/aVcY1g3YgpL0mw5Bw1VTmKaRdz1eBi9DmKrKX
    +UijG4gD8eLRV/FS/sZCFNR/evbQXvTBxO0TOIVi85PlQEcMl4SBj0CoTyNbcAGtz
    +4wIDAQAB
    +-----END PUBLIC KEY-----';
    +
    +        $pubKey = Config::get('system.update_gateway_key', $pubKey);
    +
    +        $data = base64_encode(json_encode($data));
    +
    +        return openssl_verify($data, $signature, $pubKey) === 1;
    +    }
     }
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

4

News mentions

0

No linked articles in our index yet.