信頼できないtarファイルを安全に抽出するには?

信頼できないtarファイルを安全に抽出するには?

抽出されたすべてのファイルが特定のプレフィックスディレクトリの下に配置されるようにtarファイルを抽出したいと思います。 tarファイルを外部ディレクトリに書き込もうとすると、抽出は失敗します。

あなたが想像できるように、これにより信頼できないtarファイルを安全に抽出できます。

GNUを使用してこれをどのように実行できますかtar

私は次のことを思い出しました。

tar --exclude='/*' --exclude='*/../*' --exclude='../*' -xvf untrusted_file.tar

しかし、それが妄想的な程度かどうかはよくわかりません。

ベストアンサー1

妄想に陥る必要は全くありません。 GNU -tar事実どのtar過去30年間に書かれたよく設計されたプログラムは、基本的に..スラッシュで始まるか、要素を含むtarballのファイル抽出を拒否します。

tar現代のプログラムが潜在的に悪意のあるタルボールを抽出することを強制するには、多くの努力が必要です。 GNUとBSDの両方にこの保護を無効にするオプションがtar必要です。-Pリソースセクションを参照してください。絶対ファイル名GNU tar マニュアルにあります。

-Pただし、POSIXはこのフラグを指定しないため、他のtarプログラムではこの問題を処理する別の方法があるかもしれません。たとえば、Schilyツールはstarプログラムこれらの保護機能を使用し-/-..無効にしてください。

単純なコマンドに追加することを検討できる唯一のことは、安全な一時ディレクトリにコンテンツを抽出するように強制するtarフラグであるため、最初にそこに-C到達する必要はありません。cd


火法:

  1. 技術的には、tarPOSIXはこれを指定しません。彼らはUnixコンピューティングの世界で私たちが何を使うべきかを話そうとします。paxtarこれでとが置き換えられましたが、cpioコンピューティングの世界では、これを無視します。

    ここで、POSIX仕様には、pax前のスラッシュや埋め込み要素を処理する方法が記載されていないことに注意することが重要です..。非標準--insecureフラグがあります。BSDpax埋め込みパス要素に対する保護を抑制します..が、先行スラッシュに対する基本的な保護はありません。 BSDpaxのマニュアルページでは、-s絶対パスリスクを処理するための代替ルールの作成を間接的にお勧めします。

    これは、事実上の基準が依然として積極的に使用され、法的基準がほとんど無視される場合に発生します。

おすすめ記事