新城@筑波大学情報です。こんにちは。

Wikiクローンのいくつかに、添付ファイルでクロスサイト・スクリ
プティング攻撃に対する脆弱性が見つかっています。

http://www.ipa.go.jp/security/vuln/documents/2005/JVN_465742E4_Wiki.html
http://jvn.jp/jp/JVN%23465742E4/index.html

結局、添付ファイルとして HTML のテキストをを送り込んだら、そ
れをそのまま Content-Type: text/html で送り返すという所に問
題があるということなのでしょう。

対策としては、添付ファイルは、Content-Type:
application/binary にしてしまって、ダウンロードしてもらえば
いいかと思いました。まあ、ダウンロードしたファイルをピコピコ
すれば、それはローカルの権限で JavaScript が動いたりしてもっ
と危ないという話もあるかもしれませんが、それはクロスサイト・
スクリプティング攻撃ではないので、クッキーが盗まれるとか、そ
ういうことはありません。

PukiWiki では、こんな感じで修正してみました。
----------------------------------------------------------------------
% diff attach.inc.php.~1~ attach.inc.php
603c603,604
<               header('Content-Type: '   . $this->type);
---
> //            header('Content-Type: '   . $this->type);
>               header('Content-Type: application/binary');
%
----------------------------------------------------------------------

Tiki は、こんな感じ。
------------------------------------------------------------
% diff attach.rb.~1~ attach.rb
195c195,196
<          "Content-Type: " + ctype + "\r\n",
---
> #        "Content-Type: " + ctype + "\r\n",
>          "Content-Type: " + "application/binary" + "\r\n",
% 
------------------------------------------------------------

ただ、こうしてしまうと、全部の添付ファイルが 
application/binary になってしまうので、image/gif なんかもダ
ウンロードしてしまって、インライン・イメージが使えなくなりま
す。インライン・イメージを有効にするには、もう少し if 文入れ
て凝ったものにした方がいいでしょう。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\