tarballは、ファイルの抽出に使用されるコマンドに関係なく、ファイルの抽出先を変更できるのは本当ですか?


27

私は、知らない変更を加える可能性があるため、tarballを慎重に抽出する必要があると言う同僚がいます。tarballは圧縮されたファイルの階層にすぎないと常に思っていたので、/ tmp / example /に展開すると、ファイルを/ etc /などに忍び込ませることはできません。


1
どのオペレーティングシステム環境に関心がありますか?GNU / Linuxのtarには、-Pこの点で動作に影響するオプションがあります。
ジェフシャラー

1
私はこの場合CentOSを推測しますが、私が知っておくべきことは何でも知りたいです。
アダムR.グレイ

1
長い間、GNU tarは、たとえば/etc/passwdrootとして実行された場合に削除できるようにする方法でだまされる可能性がありました。しばらくして、それはgtarあなたが得ると同様のセキュリティを提供すると信じていますstar
気違い

回答:


41

この点で、tarユーティリティの動作が異なるため、注意が必要です。作成しなかったtarファイルについては、抽出する前に常に目次をリストしてください。

Solaris tar

指定されたファイルはtarfileから抽出され、現在のディレクトリを基準にしてtarfileで指定されたディレクトリに書き込まれます。抽出するファイルとディレクトリの相対パス名を使用します。

tarアーカイブに含まれる絶対パス名は、絶対パス名を使用して解凍されます。つまり、先頭のスラッシュ(/)は削除されません。

次のようなフル(絶対)パス名を持つtarファイルの場合:

/tmp/real-file
/etc/sneaky-file-here

...そのようなファイルを抽出すると、両方のファイルになります。

GNU tar

デフォルトでは、GNU tarは/入力または出力の先頭を削除し、..コンポーネントを含むファイル名について文句を言います。この動作をオフにするオプションがあります。

--absolute-names

-P

ファイル名から先頭のスラッシュを削除せず、..ファイル名コンポーネントを含むファイル名を許可します。

... オプション使用せずに GNU tar 使用して完全パスのtarファイルを抽出する-Pと、次のように表示されます。

tar:/メンバー名から先頭を削除

ファイルを現在のディレクトリのサブディレクトリに抽出します。

AIX tar

これについては何も言わず、Solaris tarとして動作します。フル/絶対パス名でtarファイルを作成および抽出します。

HP-UX tar:( より良いオンラインリファレンスを歓迎)

警告

絶対パス名を相対位置に復元する方法はありません。

OpenBSD tar

-P

/パス名から先頭のスラッシュ()を削除しないでください。デフォルトでは、先頭のスラッシュが削除されます。

macOS、FreeBSD、NetBSDにも同様のセマンティクスで-P実装されtarたオプションがありtarFreeBSDおよびmacOSでは「パス名に..シンボリックリンクが含まれているか、ターゲットディレクトリが変更されるアーカイブエントリの抽出を拒否します」が追加されます-P

schilytoolsスター

-/

アーカイブを抽出するときに、ファイル名から先頭のスラッシュを削除しないでください。通常、絶対パス名を含むtarアーカイブは悪い考えです。他のtar実装では、既存のファイルを上書きせずに展開することはできません。そのため、デフォルトでは、抽出モードではファイル名から先頭のスラッシュが削除されます。


2
長い間、GNU tarは含むパス名があるという事実を無視..セキュリティリスクですので、使用starまたは最近のをgtar。また、ほとんどの実装が警告なしでファイルを削除するstar手作りのtarヘッダーを含むtarアーカイブの例を見てくださいtar
気違い

@schilyは、Jeffの引用によるとtar、Solaris、AIX、HP-UXにも当てはまりませんか?もしそうなら、特に(上記の引用によると)GNU tarのみを指摘するのはなぜ..ですか?不正な入力の問題はもちろんバグであり、あなたはそれらをそのように報告したと思います。
-ilkkachu

1
歴史的なtar実装は、そのようなことをチェックしていません。GNU tarにはリリースに言及せずに問題がないという主張があったため、私は発言する必要がありました。ところで:言及のないこのようなリストstar(最も古い無料の実装)は不完全であると見なされます。
気違い

@schily、私は主要なOS(異なるtar実装を持つかもしれない)のmanページを検索しました。スターのオンラインmanページへのリンクがあれば、喜んでそれを含めたい。
ジェフシャラー


9

タール爆弾で発生する陽気なことの1つは、現在のディレクトリの権限をtarballに含まれているものに変更することです。

たとえば、tarballに「。」が含まれている場合 ディレクトリ、および/ tmpにrootとして展開すると、root以外のユーザーが/ tmpを書き込み不可にしてシステムを破壊します。


そして、パッケージを展開する/と、ルートディレクトリのアクセス許可が変更され、予期しない結果が生じます(コンソールにログインすると、/モード770であったため「/ bin / bashを実行できません」と表示されます)。
法律29

1
公式ソフトウェアでこれを実現しました-「rancher-compose」のgithubリリースにはすべて「。」が含まれています たとえば、tarファイルで、そこに展開する場合はnuke / tmpを使用します。
ハラルド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.