トラバーサルの語源は?

1 ビュー

ディレクトリトラバーサル攻撃の名称は、攻撃者がアクセス可能なディレクトリから、本来アクセス権限のない機密ディレクトリへと、階層構造を「横断(トラバース)」することに由来します。 これは、ファイルシステムの構造を辿り、意図しないファイルや情報にアクセスする手法を表しています。 故に「トラバーサル」という用語が使われます。

コメント 0 好き

トラバーサルの語源:ディレクトリ構造を「横断」する行為の命名

「ディレクトリトラバーサル攻撃」という、耳慣れない言葉に、まず「トラバーサル」という言葉に注目が集まるでしょう。 攻撃手法そのものの危険性もさることながら、この言葉の語源を探ることで、攻撃の根本的なメカニズムへの理解が深まります。 一見専門用語のように思える「トラバーサル」ですが、その根底には、私たちが日常的に用いる、ごく自然な概念が潜んでいます。

「トラバーサル」は、英語の”traversal”に由来します。 これは、動詞”traverse”の名詞形であり、”traverse”自体はラテン語の”trans-“と”vertere”に起源を持ちます。 “trans-“は「越える」「横切る」「通過する」といった意味を持つ接頭辞で、”vertere”は「向ける」「回す」「変える」という意味の動詞です。 従って、”traverse”は「横切る」「渡る」「通過する」といった意味を持ち、地理的な場所や空間を移動する際に用いられることが多く、例えば、山脈を横断する、川を渡るといった状況を表現する際に使われます。

この”traverse”がコンピュータサイエンスの文脈で使われるようになったのは、データ構造やアルゴリズムの分野です。 木構造やグラフ構造といったデータ構造において、全てのノードを順番に訪れる操作を「トラバーサル」と呼びます。 これは、データ構造を構成する要素(ノード)を「横断」し、「通過」しながら処理を行うことを意味しています。 木構造であれば、根ノードから出発し、枝を辿って全ての葉ノードまでアクセスすることを指します。 グラフ構造であれば、全てのノードとエッジを網羅することを指します。

ディレクトリトラバーサル攻撃における「トラバーサル」も、このデータ構造のトラバーサルと本質的に同じ概念に基づいています。 ファイルシステムは、ディレクトリとファイルによって階層的に構成された木構造と見なすことができます。 攻撃者は、アクセス可能なディレクトリから出発し、意図的に設計されたパス(例えば、../ を用いたパス操作)を利用することで、ファイルシステムの階層構造を「横断」し、本来アクセス権限のないディレクトリへと「通過」します。 これは、データ構造のトラバーサルと同様に、構造を辿り、特定の要素(ファイルやディレクトリ)に到達する行為なのです。

従って、「ディレクトリトラバーサル攻撃」という名称は、攻撃者がファイルシステムという木構造を、本来アクセスが許可されていない部分まで「横断(トラバース)」することに由来しています。 この名称は、攻撃のメカニズムを端的に表現しており、技術的な専門知識がなくても、その本質を理解し易いように工夫されています。 ラテン語の語源から、現代のコンピュータセキュリティにおける専門用語まで、その言葉の進化の歴史を辿ることで、より深くセキュリティの概念を理解することができるでしょう。 そして、この攻撃を防ぐための対策を講じることの重要性を改めて認識することができるのです。