
CVE-2026-40987 PoC
このリポジトリは、Spring公式セキュリティアドバイザリで公開された CVE-2026-40987 の最小再現 PoC です。
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:LSpring Integration の remote-file synchronizer は、リモートサーバーが提供するファイル名をローカル保存パスの作成時にそのまま使用できました。このとき、canonical path 検証が不十分だと、悪意のある、または侵害された FTP/SFTP/SMB サーバーが ../escaped-by-ftp-list.txt のようなファイル名を返し、設定された localDirectory の外部にファイルを書き込ませることが可能です。
公式アドバイザリによると、これは FTP だけの問題ではなく、Spring Integration の FTP/SFTP/SMB リモートファイル同期シリーズに該当する問題です。この PoC は、その中でも FtpInboundFileSynchronizer を使用して、同じ脆弱な経路を最も小さく明確に再現します。
公式アドバイザリによる影響製品:
影響バージョン:
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.20修正バージョン:
7.0.5 または 7.0.4.16.5.9 または 6.5.8.16.4.126.3.155.5.21テストは2つの経路を示します。
SpringIntegrationRemoteFilePathTraversalTest
../escaped-by-spring-integration.txt の場合、設定された local directory の外にファイルパスが作成されるかを確認します。SpringIntegrationFtpPathTraversalTest
LIST 応答に ../escaped-by-ftp-list.txt を含めます。FtpInboundFileSynchronizer がこのファイル名を受け取り、incoming/../escaped-by-ftp-list.txt をダウンロードし、結果のファイルが downloads ディレクトリの外に作成されることを確認します。PoCの主要な流れは以下の通りです。
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
つまり、アプリケーションが意図したダウンロードディレクトリを超えてファイルを書き込むことができます。
Windows:
.\mvnw.cmd test
macOS/Linux:
./mvnw test
脆弱バージョンでの期待される結果:
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
テストの成功は「脆弱な動作が再現された」ことを意味します。つまり、脆弱な依存関係ではテストが成功し、ディレクトリエスケープ書き込み動作を証明します。
以下のコマンドで複数の脆弱バージョンを確認できます。
.\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
このリポジトリのデフォルトは spring-integration.version=7.0.4 です。
この脆弱性は、攻撃者がクライアントアプリケーションのローカルファイルシステムに攻撃者制御のコンテンツを書き込めるようにする問題です。
攻撃者は、通常のHTTPクライアントではなく、アプリケーションが信頼してポーリングするリモートファイルサーバーの応答を操作できる必要があります。
したがって前提条件はありますが、条件が整えば以下のような影響が可能です。
公式アドバイザリはこの問題をHighと評価しました。
公式のSpringアドバイザリには、以下の研究者が責任を持って報告したことが記載されています。