解凍時にパストラバーサル保護を無視する方法はありますか?

解凍時にパストラバーサル保護を無視する方法はありますか?

たとえば、作業ディレクトリの上の相対パスを使用してファイルを解凍しようとすると、../../foo次のメッセージが表示されます。

warning: skipped "../" path component(s) in ../../foo

inflating: foo

問題は、ソフトウェアがインストール中に相対パスを使用してこれらのzipを生成し、インストールが間違っている場合は解凍してすべてを再インポートすることです。ユーザーが通常のインストールディレクトリ「上記」にいくつかのデータファイルを保存することを選択すると、最終的に../datafileバックアップが作成されます。これは完璧に大丈夫でしょう。アーカイブを信頼し、必要に応じてファイルを再配置するために解凍したいと思います。残念ながら、パスコンポーネントunzipについて心配せずに、アーカイブが作成されたとおりに解凍するように指示するオプションが見つかりません。../これを行うための減圧オプションはありますか?

現在のところ、zipの生成方法を変更する方法がないので、「そうしないでください」は許容される答えではありません。私たちは与えられたカードを持ってプレイしなければなりません。ターゲットプラットフォームはRHEL 5です。

ベストアンサー1

これはあなたの要件を満たす必要があります

unzip -: foo.zip

マニュアルページから

-: [Acorn、VM/CMS、MVS、Tandem を除くすべてのバージョン] アーカイブメンバーが現在の「抽出ルートフォルダ」以外の場所に抽出できるようにします。セキュリティ上の理由から解凍すると、通常、抽出されたファイル名から「親ディレクトリ」パスコンポーネント(「../」)が削除されます。このセキュリティ機能(バージョン5.50の新機能)は、解凍中にアクティブな抽出フォルダツリーヘッダーの外側の「機密」領域に誤ってファイルを書き込むのを防ぎます。 -:オプションを使用すると、unzipがより自由な以前の動作に戻り、「../」コンポーネントを使用する(以前の)アーカイブを正確に抽出して、現在の抽出フォルダレベルで複数のディレクトリツリーを作成できます。このオプションはルートディレクトリ( "/")への明示的な書き込みを許可しません。これを行うには、抽出先フォルダをルートディレクトリ(-d /など)に設定する必要があります。ただし、-: オプションが指定されている場合は、zip アーカイブに十分な「../」パスコンポーネントを指定して、ルートディレクトリを暗黙的に作成できます。このオプションを使用するときは注意してください。

おすすめ記事