アカウント名:
パスワード:
フルパスとか相対パスとかでアーカイブしてあるファイルを(間違って)rootで展開しても大丈夫? #コマンドラインオプションで安全な展開はできると思いますが
やりたいこと ・/tmp/topdir/subdir/というディレクトリをアーカイブ ・/tmp/topdir/work/というディレクトリから上位への相対パスでアーカイブ作成 ・/tmp/topdir/tmp/tmpsubdir/というディレクトリでアーカイブを展開 ・/tmp/topdir/tmp/subdir/というディレクトリができていたらOUT!?
やってみたこと $ /usr/bin/mkdir -p /tmp/topdir/subdir $ /usr/bin/touch /tmp/topdir/subdir/testfile $ /usr/bin/mkdir -p /tmp/topdir/work $ /usr/bin/mkdir -p /tmp/topdir/tmp/tmpsubdir $ /usr/bin/cd /tmp/topdir/work/ $ /usr/bin/tar cvf subdir.tar ../subdir/* a ../subdir/testfile 0K え"? $ /usr/bin/cd /tmp/topdir/tmp/tmpsubdir $ /usr/bin/mv /tmp/topdir/work/subdir.tar . $ /usr/bin/tar xvf subdir.tar tar: ブロックサイズ = 3 x ../subdir/testfile, 0 bytes, 0 テープブロック いや~ん! $ /usr/bin/ls /tmp/topdir/tmp subdir/ tmpsubdir/ げー!
駄目ジャン。。。_| ̄|○
Solarisは"今時"のOSじゃないとか言われると辛いですが(笑)、 普通は/usr/binの方が/usr/local/binよりも前に来るようにコマンドラインサーチパスに入っているかと。。。ワーン(涙)
ちなみに、GNU tarで実行すると以下のようになりました(これだよ!これ!)
$ pwd /tmp/topdir/tmp/tmpsubdir $ /usr/local/bin/tar --version tar (GNU tar) 1.14 ・・・ $ /usr/local/bin/tar xvf subdir.tar ../subdir/testfile /usr/local/bin/tar: Removing leading `../' from member names $ /usr/bin/ls /tmp/topdir/tmp/ tmpsubdir/ $ ls /tmp/topdir/tmp/tmpsubdir/ subdir/ subdir.tar
もし、システム管理者にインストールを許してもらえないという寂しい状態なら、ホームディレクトリ以下にbin/とか作って入れてパスを通すとかでしょうか。。。カナリサビシイですが
もちろん、ご指摘のようにgzipを即効で取ってきて、gccを入れて、tcsh入れて・・・云々します。(せめて、gzipぐらいは入っていて欲しかった) あと、tar zxfについてはgzip -cd hoge | tar xvf - で我慢してます(
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
tarアーカイブ (スコア:0)
フルパスとか相対パスとかでアーカイブしてあるファイルを(間違って)rootで展開しても大丈夫?
#コマンドラインオプションで安全な展開はできると思いますが
Re:tarアーカイブ (スコア:2, すばらしい洞察)
つ chroot
Re:tarアーカイブ (スコア:1)
Re:tarアーカイブ (スコア:1)
面倒くさいけど。
Re:tarアーカイブ (スコア:1)
フルパスはヤバイけど、相対パスは(上位に遡るパスでない限り)今回言うような意味でのヤバさは無い、のではないかと。
ま、下方向の相対であっても、その位置に「上書きされることをユーザが意図してない」ファイルが有ったら、同じことなんだけどね(^^;
また、一般ユーザであっても、「上書きされることをユーザが意図してない」ファイルは幾らでも有り得るわけなんだけど。
そういや先日 tar cfv hoge.tar ~/hogehogeとか書いて、ハマりました(^^;
~がフルパスに(shellにて)解釈されちゃうんですよね。
一般ユーザで良かったです。「良かった」といっても比較的ですけどね。
Re:tarアーカイブ (スコア:2, 興味深い)
今回問題になっているのはまさに「上位に遡る相対パス指定で格納されたファイル」を展開させることで、悪意ある攻撃が可能になる、ということなのですが…
で、本題。 GNU tar であれば、
作成時・展開時のどちらの場合でも、
・ファイル名が / で始まる場合
・ファイル名に .. が含まれる場合
はエラーになります。
--absolute-names オプションで強制的に作成/展開も可能ですが…
というわけで、今時だと普通は問題にはならないんじゃないでしょうか。
#GNU tar じゃない tar が入っているシステムだったらヤバイとは思いますが…
Re:tarアーカイブ (スコア:1)
>#GNU tar じゃない tar が入っているシステムだったらヤバイとは思いますが…
「フリーソフトを入れちゃいけない」計算機だと、ヤバイですぅ…
#「標準tarにセキュリティ穴がある!」とかいって上司を煽るという手もありますが(^^;
Re:tarアーカイブ (スコア:1, 参考になる)
やりたいこと
・/tmp/topdir/subdir/というディレクトリをアーカイブ
・/tmp/topdir/work/というディレクトリから上位への相対パスでアーカイブ作成
・/tmp/topdir/tmp/tmpsubdir/というディレクトリでアーカイブを展開
・/tmp/topdir/tmp/subdir/というディレクトリができていたらOUT!?
やってみたこと
$ /usr/bin/mkdir -p /tmp/topdir/subdir
$ /usr/bin/touch /tmp/topdir/subdir/testfile
$ /usr/bin/mkdir -p /tmp/topdir/work
$ /usr/bin/mkdir -p /tmp/topdir/tmp/tmpsubdir
$ /usr/bin/cd /tmp/topdir/work/
$ /usr/bin/tar cvf subdir.tar ../subdir/*
a ../subdir/testfile 0K え"?
$ /usr/bin/cd /tmp/topdir/tmp/tmpsubdir
$ /usr/bin/mv /tmp/topdir/work/subdir.tar .
$ /usr/bin/tar xvf subdir.tar
tar: ブロックサイズ = 3
x ../subdir/testfile, 0 bytes, 0 テープブロック いや~ん!
$ /usr/bin/ls /tmp/topdir/tmp
subdir/ tmpsubdir/ げー!
駄目ジャン。。。_| ̄|○
Solarisは"今時"のOSじゃないとか言われると辛いですが(笑)、
普通は/usr/binの方が/usr/local/binよりも前に来るようにコマンドラインサーチパスに入っているかと。。。ワーン(涙)
ちなみに、GNU tarで実行すると以下のようになりました(これだよ!これ!)
$ pwd
/tmp/topdir/tmp/tmpsubdir
$ /usr/local/bin/tar --version
tar (GNU tar) 1.14
・・・
$ /usr/local/bin/tar xvf subdir.tar
../subdir/testfile
/usr/local/bin/tar: Removing leading `../' from member names
$ /usr/bin/ls /tmp/topdir/tmp/
tmpsubdir/
$ ls /tmp/topdir/tmp/tmpsubdir/
subdir/ subdir.tar
もし、システム管理者にインストールを許してもらえないという寂しい状態なら、ホームディレクトリ以下にbin/とか作って入れてパスを通すとかでしょうか。。。カナリサビシイですが
Re:tarアーカイブ (スコア:1)
とりあえず、普通は /usr/local/bin が先だろ、と主張してみます。
それにしても、今時だと、
・gzip が無くては仕事にならない
・tar zxf とかで gz が扱えない tar は使い物にならない
って主張を通したいところなんですけど
通らない所もありそうですね…
Re:tarアーカイブ (スコア:0)
/usr/local/bin以下は、後から手動でインストールしたソフトが入っています。
なので、デフォルトインストール環境では/usr/localすらありませんので、GNU tarは入っていません(汗)
もちろん、ご指摘のようにgzipを即効で取ってきて、gccを入れて、tcsh入れて・・・云々します。(せめて、gzipぐらいは入っていて欲しかった)
あと、tar zxfについてはgzip -cd hoge | tar xvf - で我慢してます(
Re:tarアーカイブ (スコア:1)
との事で、「荒らし」となっているが、
そんな感じの事をやらかした同僚がいた。
「アホンダラ!」
と言われただけで済んだ。(復旧作業は済まないが・・・)
マジに怒らせると、言葉はシンプルになりますね。