Strona główna / Blog / Jackson: skutek zależy od classpath

Blog · analiza

Jackson Path deserialization: CVE jest w bibliotece, ale realny skutek zależy od FileSystemProvider obecnego na classpathie

CVE-2026-19032 dotyczy Jackson Databind i deserializacji java.nio.file.Path. Niezaufany string może zostać zamieniony w URI, a następnie przekazany do Path.of(uri). Dla schematów innych niż file: Java może próbować odnaleźć pasujący FileSystemProvider. To oznacza, że rezultat nie zależy wyłącznie od Jacksona, ale także od tego, jakie implementacje FileSystemProvider znajdują się na runtime classpath aplikacji.

CVE-2026-19032: deserializacja Path → URI → Path.of(uri) → lookup FileSystemProvider.
Fix: m.in. 2.18.10, 2.21.6, 2.22.2, 3.1.6, 3.2.2 (równoległe linie).

Ta sama wersja Jacksona, inna exploitability

Aplikacja A może mieć tylko standardowe providery JDK. Aplikacja B może zawierać dodatkowy provider dla s3: albo własnego schematu — wtedy attacker-controlled URI może wejść w dodatkowy kod i wywołać provider-specific side effects. To bardzo dobry przykład: dependency present ≠ identical attack surface.

SBOM tego nie rozstrzyga

SBOM może pokazać Jacksona i bibliotekę dostarczającą providera, ale nie odpowie automatycznie, czy istnieje ścieżka untrusted JSON → Path deserialization → URI scheme → FileSystemProvider → side effect. To już problem reachability i runtime semantics. Affected ranges też są niebanalne: poprawki w wielu równoległych liniach tworzą nieciągłe przedziały affectedness — scanner nie powinien sprowadzać wszystkiego do prostego version < fixed.

Triage i conditional VEX

Kroki: potwierdź podatną wersję; sprawdź, czy aplikacja deserializuje niezaufane dane do Path; zinwentaryzuj dostępne FileSystemProvider; oceń obsługiwane schematy i side effects; zaktualizuj Jacksona; jeśli exploitability dziś nie istnieje, zachowaj warunek do rewalidacji po zmianie dependency graph:

status: not_exploitable condition: no_risky_filesystem_provider_present revalidate_on: dependency_graph_change

Wniosek

CVE-2026-19032 pokazuje, że exploitability może być właściwością kombinacji zależności, nie pojedynczego pakietu. To dokładnie ten poziom, na którym kończy się proste SCA, a zaczyna Vulnerability Engineering.

Powiązane na blogu

Źródła

Nota redakcyjna: stan informacji 2 września 2026. CVE-2026-19032 (Jackson Databind, deserializacja Path): rezultat zależy od FileSystemProvider na runtime classpath; poprawki w wielu równoległych liniach. Artykuł koncentruje się na reachability i kombinacji zależności.

Zapamiętaj jedno

Exploitability może być właściwością kombinacji zależności, nie pojedynczego pakietu. Ta sama wersja Jacksona ma inną powierzchnię ataku zależnie od tego, jakie FileSystemProvider są na runtime classpath — to poziom, na którym kończy się proste SCA.