
CVE-2026-40987 PoC
Dieses Repository enthält einen minimalen reproduzierenden PoC für CVE-2026-40987, der im offiziellen Spring Security Advisory veröffentlicht wurde.
Remote-file synchronizer in Spring Integration writes server-supplied filename under localDirectory without canonicalizationAV:N/AC:H/PR:L/UI:R/S:C/C:L/I:H/A:LDer Remote-Datei-Synchronisierer von Spring Integration konnte den vom entfernten Server bereitgestellten Dateinamen direkt für den lokalen Speicherpfad verwenden. Wenn die kanonische Pfadüberprüfung nicht ausreicht, kann ein bösartiger oder kompromittierter FTP/SFTP/SMB-Server einen Dateinamen wie ../escaped-by-ftp-list.txt zurückgeben und so das Schreiben von Dateien außerhalb des konfigurierten localDirectory ermöglichen.
Laut offiziellem Advisory betrifft dieses Problem nicht nur FTP, sondern die gesamte Familie der FTP/SFTP/SMB-Remote-Datei-Synchronisierer von Spring Integration. Dieser PoC verwendet , um den gleichen Schwachstellenpfad möglichst klein und klar zu reproduzieren.
FtpInboundFileSynchronizerBetroffene Produkte laut offiziellem Advisory:
Betroffene Versionen:
7.0.0 - 7.0.46.5.0 - 6.5.86.4.0 - 6.4.116.3.0 - 6.3.145.5.0 - 5.5.20Behobene Versionen:
7.0.5 oder 7.0.4.16.5.9 oder 6.5.8.16.4.126.3.155.5.21Die Tests zeigen zwei Angriffspfade:
SpringIntegrationRemoteFilePathTraversalTest
../escaped-by-spring-integration.txt der Dateipfad außerhalb des konfigurierten lokalen Verzeichnisses erstellt wird.SpringIntegrationFtpPathTraversalTest
../escaped-by-ftp-list.txt in die LIST-Antwort des FTP-Servers.FtpInboundFileSynchronizer von Spring Integration diesen Dateinamen erhält, incoming/../escaped-by-ftp-list.txt herunterlädt und die resultierende Datei außerhalb des downloads-Verzeichnisses erstellt wird.Der Kernablauf des PoC ist wie folgt:
configured localDirectory = <temp>/downloads
remote LIST filename = ../escaped-by-ftp-list.txt
resulting local path = <temp>/downloads/../escaped-by-ftp-list.txt
normalized location = <temp>/escaped-by-ftp-list.txt
Das bedeutet, dass die Anwendung Dateien außerhalb des beabsichtigten Download-Verzeichnisses schreiben kann.
Windows:
.\mvnw.cmd test
macOS/Linux:
./mvnw test
Erwartetes Ergebnis bei anfälligen Versionen:
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
Ein erfolgreicher Test bedeutet, dass das anfällige Verhalten reproduziert wurde. Mit anderen Worten: Bei einer anfälligen Abhängigkeit besteht der Test und demonstriert das Überschreiben außerhalb des Verzeichnisses.
Mit den folgenden Befehlen können mehrere anfällige Versionen getestet werden:
.\mvnw.cmd "-Dspring-integration.version=6.4.10" test
.\mvnw.cmd "-Dspring-integration.version=6.5.8" test
.\mvnw.cmd "-Dspring-integration.version=7.0.4" test
.\mvnw.cmd "-Dspring-integration.version=7.1.0-RC1" test
Der Standardwert in diesem Repository ist spring-integration.version=7.0.4.
Diese Schwachstelle ermöglicht es einem Angreifer, kontrollierte Inhalte in das lokale Dateisystem der Clientanwendung zu schreiben. Der Angreifer muss kein typischer HTTP-Client sein, sondern in der Lage sein, die Antworten des von der Anwendung vertrauten und abgefragten Remote-Dateiservers zu manipulieren.
Es gibt also Voraussetzungen, aber wenn sie erfüllt sind, sind folgende Auswirkungen möglich:
Das offizielle Advisory bewertet dieses Problem als High.
Im offiziellen Spring Advisory werden folgende Forscher für die verantwortungsvolle Offenlegung genannt: