私は、知らない変更を加える可能性があるため、tarballを慎重に抽出する必要があると言う同僚がいます。tarballは圧縮されたファイルの階層にすぎないと常に思っていたので、/ tmp / example /に展開すると、ファイルを/ etc /などに忍び込ませることはできません。
/etc/passwdrootとして実行された場合に削除できるようにする方法でだまされる可能性がありました。しばらくして、それはgtarあなたが得ると同様のセキュリティを提供すると信じていますstar。
私は、知らない変更を加える可能性があるため、tarballを慎重に抽出する必要があると言う同僚がいます。tarballは圧縮されたファイルの階層にすぎないと常に思っていたので、/ tmp / example /に展開すると、ファイルを/ etc /などに忍び込ませることはできません。
/etc/passwdrootとして実行された場合に削除できるようにする方法でだまされる可能性がありました。しばらくして、それはgtarあなたが得ると同様のセキュリティを提供すると信じていますstar。
回答:
この点で、tarユーティリティの動作が異なるため、注意が必要です。作成しなかったtarファイルについては、抽出する前に常に目次をリストしてください。
指定されたファイルはtarfileから抽出され、現在のディレクトリを基準にしてtarfileで指定されたディレクトリに書き込まれます。抽出するファイルとディレクトリの相対パス名を使用します。
tarアーカイブに含まれる絶対パス名は、絶対パス名を使用して解凍されます。つまり、先頭のスラッシュ(/)は削除されません。
次のようなフル(絶対)パス名を持つtarファイルの場合:
/tmp/real-file
/etc/sneaky-file-here
...そのようなファイルを抽出すると、両方のファイルになります。
デフォルトでは、GNU tarは
/入力または出力の先頭を削除し、..コンポーネントを含むファイル名について文句を言います。この動作をオフにするオプションがあります。
--absolute-names
-Pファイル名から先頭のスラッシュを削除せず、
..ファイル名コンポーネントを含むファイル名を許可します。
... オプションを使用せずに GNU tar を使用して完全パスのtarファイルを抽出する-Pと、次のように表示されます。
tar:
/メンバー名から先頭を削除
ファイルを現在のディレクトリのサブディレクトリに抽出します。
これについては何も言わず、Solaris tarとして動作します。フル/絶対パス名でtarファイルを作成および抽出します。
HP-UX tar:( より良いオンラインリファレンスを歓迎)
警告
絶対パス名を相対位置に復元する方法はありません。
-P
/パス名から先頭のスラッシュ()を削除しないでください。デフォルトでは、先頭のスラッシュが削除されます。
macOS、FreeBSD、NetBSDにも同様のセマンティクスで-P実装されtarたオプションがありtar、FreeBSDおよびmacOSでは「パス名に..シンボリックリンクが含まれているか、ターゲットディレクトリが変更されるアーカイブエントリの抽出を拒否します」が追加されます-P。
-/アーカイブを抽出するときに、ファイル名から先頭のスラッシュを削除しないでください。通常、絶対パス名を含むtarアーカイブは悪い考えです。他のtar実装では、既存のファイルを上書きせずに展開することはできません。そのため、デフォルトでは、抽出モードではファイル名から先頭のスラッシュが削除されます。
..セキュリティリスクですので、使用starまたは最近のをgtar。また、ほとんどの実装が警告なしでファイルを削除するstar手作りのtarヘッダーを含むtarアーカイブの例を見てくださいtar。
tar、Solaris、AIX、HP-UXにも当てはまりませんか?もしそうなら、特に(上記の引用によると)GNU tarのみを指摘するのはなぜ..ですか?不正な入力の問題はもちろんバグであり、あなたはそれらをそのように報告したと思います。
star(最も古い無料の実装)は不完全であると見なされます。
タール爆弾で発生する陽気なことの1つは、現在のディレクトリの権限をtarballに含まれているものに変更することです。
たとえば、tarballに「。」が含まれている場合 ディレクトリ、および/ tmpにrootとして展開すると、root以外のユーザーが/ tmpを書き込み不可にしてシステムを破壊します。
/と、ルートディレクトリのアクセス許可が変更され、予期しない結果が生じます(コンソールにログインすると、/モード770であったため「/ bin / bashを実行できません」と表示されます)。
-Pこの点で動作に影響するオプションがあります。