Return-Path: owner-bugtraq-jp@SECURITYFOCUS.COM X-Mailer: Winbiff [Version 2.20 PL4] Mime-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Message-ID: <200002151037.HGG63298.BJBTL@lac.co.jp> Date: Tue, 15 Feb 2000 10:37:04 +0900 Reply-To: SAKAI Yoriyuki Sender: BUGTRAQ-JP List From: SAKAI Yoriyuki Subject: Re: Security Focus Newsletter #28 2000-02-05 ->2000-02-13 X-To: bugtraq-jp@securityfocus.com To: BUGTRAQ-JP@SECURITYFOCUS.COM In-Reply-To: <76313.950520677@ideon.st.ryukoku.ac.jp> 坂井です。 In message <76313.950520677@ideon.st.ryukoku.ac.jp> "Re: [BUGTRAQ-JP] Security Focus Newsletter #28 2000-02-05 ->2000-02-13" "KOJIMA Hajime / 小島肇 " wrote: > いきなり fopen() しちゃうのが問題、と理解してよいのでしょうか? そうだとおもいます。 手もとの作りかけの覚え書きに一時ファイルの望ましい取り扱い方、とい うのがありましたので抜き出してみます。 (まだ作りかけなのでできていない部分があります。また、最初に着手したの が 1996 年頃なのでもしかすると古くなっている部分があるかもしれません。) --------------ここから 一時ファイルの望ましい取り扱い方 一時ファイルがなぜ危険なのか? ・攻撃者はハードリンクやシンボリックリンクをファイルの参照先の変更の 手段に使う可能性がある ・一時ファイル名の付け方を頭をひねって考えねばならない ・/tmpや/var/tmpは誰でも書き込めたり読めてしまうので注意がいる ・固定されているファイル名だったら類推できてしまう ・プロセス ID に由来するファイル名だったら類推できてしまう ・多くの一時ファイル作成関数の仕様はあれこれhackされている 例えば、mktemp、tmpnam、tempnam等。mktemp(3) 関数の結果は類推可能 だと思う 対処方法: ・一時ファイルを使うのを忘れる(使わない) ・望ましい方法で一時ファイルを使うようにする 望ましい一時ファイルの使い方: 1) 誰か特定のユーザ権限でファイルを取り扱う -よい方法 * 開きたいユーザへ setuid する * その後ファイルを開く * fstat()でファイルのパーミッションのチェックをする チェックの結果が変だったら処理を続行しない 次いで fchown()、fchmod()等で誰か他人が握らないようにする -わるい方法 * いきなりファイルを開いて取り扱う(一時ディレクトリを信じてしまう) 2) setuid せずにファイルを取り扱う -よい方法 * fstat()でファイルのパーミッションのチェックをする チェックの結果が変だったら処理を続行しない 次いで fchown()、fchmod()等で誰か他人が握らないようにする -わるい方法 * いきなりファイルを開いて取り扱う(一時ディレクトリを信じてしまう) 考察事項: ・他人が一時ファイルを握らないようにするには setuid が究極の策なの だろうか? ・1)と2)とどちらが安全にファイルを削除できるだろうか? (一時ファイルは削除せねばならない) ・一時ファイルのファイル名のよい付け方の定説はあるのか? --------------ここまで -- SAKAI Yoriyuki /----------------------------------->> sakai@lac.co.jp / LAC Co., Ltd. <<-----------------------/ http://www.lac.co.jp/security/