KOMATSU Shinichiro
koma2****@lovep*****
2005年 5月 22日 (日) 07:05:30 JST
小松です。 From: Kazuhiko <kazuh****@fdiar*****> Subject: [Hiki-dev:00746] Re: ファイル添付機能の脆弱性について Date: Sat, May 21, 2005 at 08:32:44PM JST > 実際の危険を回避するという意味では、内容すべてを /<script\b/i でマッチさ > せるのが確実だと思いますが、それを毎回やるのは高負荷だと思うので、もしそ > れでやるなら mime-type の判定結果をキャッシュするようにしたいと思います。 一度添付したファイルが勝手に書き変わることはないので、 添付した時にチェックするといいと思います。 # まぁ、すでに添付されているファイルのことを考えると、 # 表示する時にも何らかのチェックはすべきでしょうけど。 で、添付の patch のように、/<script\b/i にマッチしたら 問答無用で拒絶するというのはいかがでしょう? -- ┏━━━━━━━━━━━━━━━━━━━━━━┓ 小松 晋一朗 koma2****@lovep***** http://bloghome.lovepeers.org/daymemo2/ ┗━━━━━━━━━━━━━━━━━━━━━━┛ -------------- next part -------------- Index: misc/plugin/attach/attach.cgi =================================================================== RCS file: /cvsroot/hiki/hiki/misc/plugin/attach/attach.cgi,v retrieving revision 1.16 diff -u -r1.16 attach.cgi --- misc/plugin/attach/attach.cgi 10 May 2005 09:23:25 -0000 1.16 +++ misc/plugin/attach/attach.cgi 21 May 2005 22:03:16 -0000 @@ -48,12 +48,17 @@ raise "File size is larger than limit (#{max_size} bytes)." end unless filename.empty? - open(path.untaint, "wb") do |f| - f.print params['attach_file'][0].read + content = params['attach_file'][0].read + if (!@conf.options['attach.allow_script']) && (/<script\b/i =~ content) + raise "You cannot attach a file that contains scripts." + else + open(path.untaint, "wb") do |f| + f.print content + end + r << "FILE = #{path}\n" + r << "SIZE = #{File.size(path)} bytes\n" + send_updating_mail(page, 'attach', r) if****@conf*****_on_update end - r << "FILE = #{path}\n" - r << "SIZE = #{File.size(path)} bytes\n" - send_updating_mail(page, 'attach', r) if****@conf*****_on_update end redirect(cgi, "#{@conf.index_url}?c=#{command}&p=#{page.escape}") rescue Exception => ex