[Hiki-dev:00607] Re: mod_ruby+HikiFarmのattach.cgiでSecurityError

Back to archive index

Kazuhiko kazuh****@fdiar*****
2004年 12月 14日 (火) 14:27:02 JST


こんにちは。かずひこです。

At Tue, 14 Dec 2004 14:06:08 +0900,
KAKUTANI Shintaro wrote:

> かくたにです。

先日の発表の PDF を会社のみんなで楽しく拝見しました。:)

> attach_pathはuntaintしても大丈夫かな、と思ったので
> 以下の対応で動かしています。

ご報告ありがとうございます。たしかにそうですね。

> <       Dir.mkdir(attach_path) unless test(?e, attach_path)
> ---
> >       Dir.mkdir(attach_path) unless test(?e, attach_path.untaint)

      Dir.mkdir(cache_path) unless test(?e, cache_path.untaint)
      attach_path = "#{cache_path}/#{page.untaint.escape}"
      Dir.mkdir(attach_path) unless test(?e, attach_path)

この上の page を untaint しているから合わせても大丈夫だと思っていました。
というわけで、

      Dir.mkdir(cache_path) unless test(?e, cache_path.untaint)
      attach_path = "#{cache_path}/#{page.escape}"
      Dir.mkdir(attach_path) unless test(?e, attach_path.untaint)

こんな感じにしました。ついでに空ディレクトリの削除のあたりがまちがえてい
たので直しました。こんな感じのパッチでコミットする予定です。

# detach の際の attach_path がなぜ tainted でないのかいまいち謎だけど...

Index: attach.cgi
===================================================================
RCS file: /cvsroot/hiki/hiki/misc/plugin/attach/attach.cgi,v
retrieving revision 1.10
diff -u -r1.10 attach.cgi
--- attach.cgi	22 Sep 2004 15:10:02 -0000	1.10
+++ attach.cgi	14 Dec 2004 05:24:54 -0000
@@ -40,8 +40,8 @@
 
     begin
       Dir.mkdir(cache_path) unless test(?e, cache_path.untaint)
-      attach_path = "#{cache_path}/#{page.untaint.escape}"
-      Dir.mkdir(attach_path) unless test(?e, attach_path)
+      attach_path = "#{cache_path}/#{page.escape}"
+      Dir.mkdir(attach_path) unless test(?e, attach_path.untaint)
       path = "#{attach_path}/#{CGI.escape(NKF.nkf('-e', filename))}"
       open(path.untaint, "wb") do |f|
         f.print params['attach_file'][0].read
@@ -67,7 +67,7 @@
           r << "FILE        = #{path}\n"
         end
       end
-      Dir::rmdir(attach_path) if 2 == Dir::entries(attach_path)
+      Dir::rmdir(attach_path) if Dir::entries(attach_path).size == 2
     rescue Exception
       r << "#$! (#{$!.class})\n"
       r << $@.join( "\n" )
-- 
かずひこ <http://wiki.fdiary.net/kazuhiko/>
  ★シャア「名字が付いてない」
  ☆一兵卒「あんなの飾りです。偉い人にはそれが分からんのです」



Hiki-dev メーリングリストの案内
Back to archive index