LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

ディレクトリトラバーサル

ディレクトリトラバーサル () とは、利用者が供給した入力ファイル名のセキュリティ検証/無害化が不十分であるため、ファイルAPIに対して「親ディレクトリへの横断 (traverse)」を示すような文字がすり抜けて渡されてしまうような攻略方法のことである。この攻撃の目標は、アクセス可能にすることを意図していないファイルへのアクセスをアプリケーションに命令することである。この攻撃は、コードに含まれるバグの攻略とは対照的に、セキュリティの欠如 (ソフトウェアがまさにそう振る舞うことになっている動作) を攻略する。ディレクトリトラバーサルにはthe ../ (ドットドットスラッシュ) 攻撃、 ディレクトリクライミング、およびバックトラッキングのような別名がある。この攻撃の一部の形態は、正規化攻撃でもある。脆弱なアプリケーションの典型例は以下の通り:このシステムに対する攻撃として、以下のようなHTTP要求の送信が考えられる:生成されるサーバの応答は以下のようになる:/home/users/phpguru/templates/ の後に繰り返される ../ 文字列がルートディレクトリへさかのぼるinclude()を引き起こし、それからUNIXパスワードファイル /etc/passwd をインクルードする。UNIX /etc/passwd はクラッカーがパスワードクラッキングにしばしば使うため、ディレクトリトラバーサルの実演でよく使われるファイルである。ディレクトリトラバーサルを防ぐのは見かけより困難である。「既知のまずい文字を取り除く」防御戦略は失敗する可能性が高い。ディレクトリトラバーサルが実際に機能するかどうか決定する他の入り組んだ要因が多数存在する。しかしながら、もしアプリケーションがパラメータなどの正当性を検証しなかったら、攻撃者がこの機能性を悪用する小さな隙間を見つけ出す可能性は非常に高い。以下は既知のディレクトリトラバーサル攻撃文字列の一部である:UNIXライクOSに共通のディレクトリトラバーサルは ../ 文字列を使う。Microsoft WindowsやDOSのディレクトリトラバーサルは .. 文字列を使う。現在は、多くのWindowsプログラムやAPIがUNIXライクなディレクトリトラバーサル文字列も受け付ける。各パーティションは独立したルートディレクトリ (パーティション C の場合 C: とラベル付けされる) を持ち、その上に共通のルートディレクトリは存在しない。このため、Windows上のディレクトリトラバーサル脆弱性のほとんどは攻撃先が1パーティションに限られることになる。正規化問題。クエリ文字列は通常使用する前にURIデコードされるが、行儀の悪いWebアプリケーションの中には、ディレクトリトラバーサルを防ぐためURIデコード前のクエリ文字列から以下のような危険な文字列を走査するものが存在する:しかし、このような「デコード前に走査する」アプリケーションは以下のようなパーセントエンコードされたディレクトリトラバーサルに対して脆弱である:etc.正規化問題。UTF-8はブルース・シュナイアーとJeffrey StreiflingによるCryptogram Newsletter July 2000において脆弱性と攻撃媒介の源として注目された。Microsoftが彼らのWebサーバにUnicode対応を追加したとき、../ をエンコードするための新しい方法がそのコードに入り込み、ディレクトリトラバーサル防止の試みの迂回を引き起こす原因となった。のような複数のパーセントエンコードが / や の文字列に変換された。なぜか? パーセントエンコードはMicrosoftのWebサーバにより対応する8ビット文字にデコードされたからである。WindowsとDOSはASCIIを基にした正規化された8ビット文字集合を伝統的に使っていたため、これは歴史的には正しい動作だった。しかしながら、初期のUTF-8は正規化されておらず、今や数種類の文字列が同じ文字列に変換されることになった。MicrosoftはUTF-8を正規化することなくトラバーサル対策チェックを行っていたため、(HEX) C0AF と (HEX) 2F が文字列比較を行うとき同じ文字となることに気付かなかった。ディレクトリトラバーサルを防げる可能性のあるアルゴリズムは以下のようなものである:

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。