クライアントサイドパストラバーサルの概要
クライアントサイド・パストラバーサル(Client-side Path Traversal)は、ブラウザ側(JavaScriptなど)で組み立てられるファイルパスやURLパスに対して、ユーザー入力が適切に制限・正規化されないまま使われることで起きる問題の総称です。典型的には ../ などを混ぜて、想定外の場所(親ディレクトリ側など)を参照させようとします。
クライアント側だけで成立する場合もありますが、多くは「クライアントの不備がサーバ側のファイル参照APIや静的配信と組み合わさって」影響が顕在化します。
※ただし、実際にサーバが厳密にパス検証していれば、クライアント側で ../ を作れても被害は限定的です。
fetch("/docs/" + userInput) のようにURLを組み立てるuserInput に ../admin や %2e%2e%2f(URLエンコード)等を入れる/admin 側のリソース参照が試みられるまた、SPAで「テンプレート名」「言語ファイル名」「画像パス」などを入力やURLパラメータから決めて import() / fetch() / img.src に入れるケースも類型です。
?page=... など)からテンプレート/HTML断片を読み込むlang パラメータで切り替えて動的ロードfile= で画像/文書のパスを指定)「クライアント側で頑張る」だけでは不十分で、基本はサーバ側(または提供基盤)で防ぐのが重要です。
about, help のみ)../ やそのエンコード表現、\、NULLバイト等を検出して拒否必要なら、対象が「Webサイト(SPA)」「Electronアプリ」「特定のコード断片」どれかを教えてください。想定される攻撃パターンと、最小変更での具体的な対策案に落とし込んで説明できます。
ディレクトリトラバーサルと何が違う?
ディレクトリトラバーサル(Path/Directory Traversal)とクライアントサイド・パストラバーサルの違いは、「脆弱性の主戦場がどこか」と「成立条件」です。
ディレクトリトラバーサル(一般に言うTraversal)
サーバ側の処理(例:/download?file=... をサーバがファイルパスとして扱う)が原因で、../ などによりサーバ上の想定外ファイルを読めたりする問題。
→ 本質的に サーバ側の入力検証・パス解決の不備。
クライアントサイド・パストラバーサル
ブラウザ側(JSなど)が fetch("/docs/" + input) のようにパス/URLを組み立てる際、入力が未制限で ../ 等を混ぜられて想定外のURL/パスへ誘導できる問題。
→ 本質的に クライアント側のパス組み立て・制御不備(ただし被害はサーバ側の挙動次第)。
file:// やローカル資産アクセスに繋がる../../etc/passwd のような入力で、サーバのファイルシステム上の外側を読みに行く(典型的・直接的)。../ やエンコードで“選べてしまう”ことで、想定外のエンドポイントや静的資産を取りに行かせる(間接的)。必要なら、例(SPAのfetch、i18nの動的ロード、Electronのfile:// 等)を挙げて「これはどっちの分類?」「実害が出る条件は?」をあなたのケースに合わせて整理します。