[Hiki-dev:00745] Re: ファイル添付機能の脆弱性について

Zurück zum Archiv-Index

Kazuhiko kazuh****@fdiar*****
2005年 5月 21日 (土) 18:58:42 JST


かずひこです。

At Sat, 21 May 2005 18:40:29 +0900,
Kazuhiko wrote:

>http://www.namaraii.com/hiki/?advisory20050519

| Hiki 0.6.6 ならびに Hiki 0.8.0 preview1 では、添付ファイルへのリンクに
| 対して 'Content-Disposition: attachment' というヘッダを付加して、ブラウ
| ザに対して添付ファイルを Content-Type の如何にかかわらずダウンロードさ
| せるようにすることで、この問題に対処しました。

この件は、

* HTML の添付ファイルをブラウザに表示させると危険 (ログインに使うクッキー
  と同じドメインとパスだから)
* Content-Type を無視して中身を見て HTML と判定するブラウザ (Internet
  Explorer のおそらく全バージョンのデフォルト) がいるので、Content-Type
  が text/html でなければ済むわけではない

というのが問題の要点です。

しかし、<a href="..."> なリンクに対して「中身が画像」なものまで強制ダウン
ロードさせるのは、やや不便です。

そこで、CVS HEAD では image_size ライブラリ
<http://raa.ruby-lang.org/project/image_size/> を用いて image/* と判定さ
れたファイルに関しては、attachment のかわりに inline にするように変更しま
した。これにより、画像に対する attach_download でブラウザ上で表示すること
ができるようになりました。なお、image_size ライブラリで「画像ではない」と
判定されたファイルは、すべて application/octet-stream として扱われます。

この変更に際し、オリジナルの image_size ライブラリに若干変更を加えました
ので、ここに記しておきます。

* 先頭 128 バイトで判定しているのを 256 バイトに増やした
* 先頭 256 バイトが /<script\b/ にマッチすれば無条件に非画像とした

ただし、この 256 バイトというのに明確な根拠はありません。
<http://tdiary.ishinao.net/20050520.html#p02> を参考に、「おそらく先頭の
256 バイトしかみていないであろう」という推測にもとづくものです。

お気付きの点などあればお知らせください。よろしくお願いします。
-- 
かずひこ <http://wiki.fdiary.net/kazuhiko/>
  「恋とハックはアジャイルが命!」



Hiki-dev メーリングリストの案内
Zurück zum Archiv-Index