Désérialisation non sécurisée dans phpoffice/phpspreadsheet (CVE-2026-45034)
Résumé
Vulnérabilité dans phpoffice/phpspreadsheet (CVE-2026-45034). Risque d'opérations non autorisées ou de divulgation. Exploitable via parse_url. Atténuation : mise à jour vers 1.30.5 ou plus.
Description d'origine
La description telle que publiée par la source (souvent en anglais).
PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.5, CVE-2026-34084 was patched by the helper File::prohibitWrappers. The helper calls parse_url($filename, PHP_URL_SCHEME) and then checks is_string($scheme) && strlen($scheme) > 1 to reject stream wrappers such as phar://, php://, data:// or expect://. The check is not equivalent to "does the path contain a wrapper". When the input has the form phar:///path/file.phar/inner with three or more slashes after the scheme, parse_url returns boolean false instead of returning the scheme string. The is_string($scheme) branch is therefore skipped, the helper returns without throwing, and the caller proceeds. PHP's stream layer, however, still treats phar:///... as a valid phar wrapper and opens the underlying phar file. The result is that IOFactory::load($attackerPath) walks past the patch and still touches the phar wrapper. On PHP 7.x, simply reaching the phar wrapper via is_file is enough for PHP to automatically deserialize the phar metadata, which in turn invokes the magic methods __wakeup and __destruct of an attacker controlled object and gives full RCE. On PHP 8.x, automatic metadata deserialization for plain file ops was removed, so the chain at the PhpSpreadsheet layer reduces to a phar wrapper file read primitive, and RCE only resurfaces if the downstream consumer ever calls Phar::getMetadata. This vulnerability is fixed in 1.30.5.
Source: GitHub Security Advisories (Global) NVD GitHub Advisory
Résumé généré automatiquement
Assemblé par SecPulse à partir des données sources (CVSS, CWE, versions affectées) à l'aide de modèles, sans IA. Vérifiez la description d'origine et les références ci-dessous.
Une vulnérabilité référencée CVE-2026-45034 a été découverte dans phpoffice/phpspreadsheet.
Des attaquants peuvent cibler un point d'entrée spécifique comme parse_url à distance pour détourner le produit.
Risque d'opérations non autorisées ou de divulgation.
Action : mettez à jour phpoffice/phpspreadsheet vers 1.30.5 ou supérieur.
En cas de doute, contactez votre service informatique ou cherchez « phpoffice/phpspreadsheet CVE-2026-45034 » sur le site de l'éditeur.
CVE-2026-45034 (phpoffice/phpspreadsheet) — CWE-502
Surface d'attaque : parse_url / false / is_file / __wakeup
Correctif : 1.30.5 — appliquer immédiatement
Plan : 1) Audit SBOM, 2) Mise à jour staging→prod, 3) Surveillance WAF/proxy sur les endpoints affectés, 4) Recherche d'IOC dans les logs.
Réfs : voir GHSA / avis éditeur / version corrigée liés sur cette page.
Une désérialisation non sécurisée (CWE-502) affecte phpoffice/phpspreadsheet. Les attaquants atteignent le code vulnérable via parse_url.
Consultez l'avis de l'éditeur pour les versions affectées de phpoffice/phpspreadsheet. Surface d'attaque : parse_url / false / is_file / __wakeup.
Gravité : ?. Risque d'opérations non autorisées ou de divulgation.
Mettre à jour vers 1.30.5.
En attendant le correctif : désactivez la fonctionnalité concernée, appliquez des règles WAF, ou restreignez l'accès par ACL réseau.
Recherchez dans les logs des requêtes correspondant aux IOC connus de cette CVE. Auditez les SBOM/dépendances.
Actions de réponse
Étapes concrètes et exemples de commandes que les équipes SOC/SRE doivent exécuter dans l'ordre
-
1Identify exposure identify
grep -r 'phpoffice/phpspreadsheet' . | grep -v node_modulesリポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で
phpoffice/phpspreadsheetを grep し、稼働しているサービス・バージョンを把握する。 -
2Apply patch patch
Upgrade phpoffice/phpspreadsheet to 1.30.5ステージング環境で 1.30.5 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。
-
3Post-deployment verification verify
Confirm patched version is live in productionパッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。
Paquets affectés
Références
- advisory github.com
- advisory github.com
- advisory github.com
- advisory nvd.nist.gov
- package github.com
- web github.com