p PatchFirst

CVE-2026-102601

CVE-2026-102601 · Flysystem: WhitespacePathNormalizer's control-character (CorruptedPathDetected) check is bypassed by malformed UTF-8 in the path, affecting every adapter

This page contains facts from public vulnerability sources. Check the original advisory before updating.

Flysystem is an open source file storage library for PHP. Prior to 3.35.3, the default WhitespacePathNormalizer in src/WhitespacePathNormalizer.php used by Filesystem across adapters calls preg_match with the u modifier and treats both false and 0 as falsy. A path containing malformed UTF-8 causes PCRE to return false, so paths that also contain control characters bypass CorruptedPathDetected::forPath() in normalizePath(). Filesystem::write() can store such names and Filesystem::listContents() can return the raw ANSI escape sequences, allowing hidden or spoofed terminal file listings when an administrator displays them. This issue is fixed in version 3.35.3.

CVSS 3.5 · Low · EPSS 0.3% · Fix available

Published
Updated

Stack: system · php

Affected products and versions

  • flysystem

    Versions
    • < 3.35.3: Affected

    No fix published

  • php-league-flysystem Debian:12

    Versions
    • 1.1.10-1
    • 1.1.10-2
    • 3.28.0-1
    • 3.29.1-1
    • 3.29.1-2
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

  • php-league-flysystem Debian:13

    Versions
    • 3.29.1-2
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

  • php-league-flysystem Debian:14

    Versions
    • 3.29.1-2
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

  • league/flysystem Packagist

    Versions
    • 0.1.0
    • 0.1.1
    • 0.1.10
    • 0.1.11
    • 0.1.12
    • 0.1.13
    • 0.1.14
    • 0.1.15
    • 0.1.16
    • 0.1.17
    • 0.1.18
    • 0.1.19
    • 0.1.2
    • 0.1.20
    • 0.1.3
    • 0.1.4
    • 0.1.5
    • 0.1.6
    • 0.1.7
    • 0.1.8
    • 0.1.9
    • 0.2.0
    • 0.2.1
    • 0.2.10
    • 0.2.11
    • 0.2.12
    • 0.2.13
    • 0.2.14
    • 0.2.15
    • 0.2.2
    • 0.2.3
    • 0.2.4
    • 0.2.5
    • 0.2.6
    • 0.2.7
    • 0.2.8
    • 0.2.9
    • 0.3.0
    • 0.3.1
    • 0.3.2
    • 0.3.3
    • 0.3.4
    • 0.3.5
    • 0.4.0
    • 0.4.1
    • 0.4.2
    • 0.4.3
    • 0.4.4
    • 0.4.5
    • 0.5.0
    • 0.5.1
    • 0.5.10
    • 0.5.11
    • 0.5.12
    • 0.5.2
    • 0.5.3
    • 0.5.4
    • 0.5.5
    • 0.5.6
    • 0.5.7
    • 0.5.8
    • 0.5.9
    • 1.0.0
    • 1.0.0-alpha1
    • 1.0.1
    • 1.0.10
    • 1.0.11
    • 1.0.12
    • 1.0.13
    • 1.0.14
    • 1.0.15
    • 1.0.16
    • 1.0.17
    • 1.0.18
    • 1.0.19
    • 1.0.2
    • 1.0.20
    • 1.0.21
    • 1.0.22
    • 1.0.23
    • 1.0.24
    • 1.0.25
    • 1.0.26
    • 1.0.27
    • 1.0.28
    • 1.0.29
    • 1.0.3
    • 1.0.30
    • 1.0.31
    • 1.0.32
    • 1.0.33
    • 1.0.34
    • 1.0.35
    • 1.0.36
    • 1.0.37
    • 1.0.38
    • 1.0.39
    • 1.0.4
    • 1.0.40
    • 1.0.41
    • 1.0.42
    • 1.0.43
    • 1.0.44
    • 1.0.45
    • 1.0.46
    • 1.0.47
    • 1.0.48
    • 1.0.49
    • 1.0.5
    • 1.0.50
    • 1.0.51
    • 1.0.52
    • 1.0.53
    • 1.0.54
    • 1.0.55
    • 1.0.56
    • 1.0.57
    • 1.0.58
    • 1.0.59
    • 1.0.6
    • 1.0.60
    • 1.0.61
    • 1.0.62
    • 1.0.63
    • 1.0.64
    • 1.0.65
    • 1.0.66
    • 1.0.67
    • 1.0.68
    • 1.0.69
    • 1.0.7
    • 1.0.70
    • 1.0.8
    • 1.0.9
    • 1.1.0
    • 1.1.1
    • 1.1.10
    • 1.1.2
    • 1.1.3
    • 1.1.4
    • 1.1.5
    • 1.1.6
    • 1.1.7
    • 1.1.8
    • 1.1.9
    • 2.0.0
    • 2.0.0-RC1
    • 2.0.0-alpha.1
    • 2.0.0-alpha.2
    • 2.0.0-alpha.3
    • 2.0.0-alpha.4
    • 2.0.0-beta.1
    • 2.0.0-beta.2
    • 2.0.0-beta.3
    • 2.0.1
    • 2.0.2
    • 2.0.3
    • 2.0.4
    • 2.0.5
    • 2.0.6
    • 2.0.7
    • 2.0.8
    • 2.1.0
    • 2.1.1
    • 2.2.0
    • 2.2.1
    • 2.2.2
    • 2.2.3
    • 2.3.0
    • 2.3.1
    • 2.3.2
    • 2.4.0
    • 2.4.1
    • 2.4.2
    • 2.4.3
    • 2.4.4
    • 2.4.5
    • 2.5.0
    • 3.0.0
    • 3.0.1
    • 3.0.10
    • 3.0.11
    • 3.0.12
    • 3.0.13
    • 3.0.14
    • 3.0.15
    • 3.0.16
    • 3.0.17
    • 3.0.18
    • 3.0.19
    • 3.0.2
    • 3.0.20
    • 3.0.21
    • 3.0.22
    • 3.0.23
    • 3.0.3
    • 3.0.4
    • 3.0.5
    • 3.0.6
    • 3.0.7
    • 3.0.8
    • 3.0.9
    • 3.1.0
    • 3.1.1
    • 3.10.0
    • 3.10.1
    • 3.10.2
    • 3.10.3
    • 3.10.4
    • 3.11.0
    • 3.12.0
    • 3.12.1
    • 3.12.2
    • 3.12.3
    • 3.13.0
    • 3.14.0
    • 3.15.0
    • 3.15.1
    • 3.16.0
    • 3.17.0
    • 3.18.0
    • 3.19.0
    • 3.2.0
    • 3.2.1
    • 3.20.0
    • 3.21.0
    • 3.22.0
    • 3.23.0
    • 3.23.1
    • 3.24.0
    • 3.25.0
    • 3.25.1
    • 3.26.0
    • 3.27.0
    • 3.28.0
    • 3.29.0
    • 3.29.1
    • 3.3.0
    • 3.30.0
    • 3.30.1
    • 3.30.2
    • 3.31.0
    • 3.32.0
    • 3.33.0
    • 3.34.0
    • 3.35.0
    • 3.35.1
    • 3.35.2
    • 3.4.0
    • 3.5.0
    • 3.5.1
    • 3.5.2
    • 3.6.0
    • 3.7.0
    • 3.8.0
    • 3.9.0
    Affected ranges
    • ECOSYSTEM: < 3.35.3

    Update to 3.35.3

  • php-league-flysystem Ubuntu:16.04:LTS

    Versions
    • 1.0.15-1
    • 1.0.16-1
    • 1.0.16-1build1
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

  • php-league-flysystem Ubuntu:22.04:LTS

    Versions
    • 1.1.3-4
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

  • php-league-flysystem Ubuntu:24.04:LTS

    Versions
    • 1.1.10-1
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

  • php-league-flysystem Ubuntu:26.10

    Versions
    • 3.29.1-2
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

  • php-league-flysystem Ubuntu:26.04:LTS

    Versions
    • 3.29.1-2
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

Original sources

Check your server →