Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: クロスサイトスクリプティング脆弱性 (ver2.0.10)



<20020326125843.10385773.-1841068586@xxxxxxxxxxxxxxxxxxxxxxx>の記事において
hanai-a@xxxxxxxxxxxxxxxxxxxxxxxさんは書きました。

>> cgiの呼び出しにて、存在しないインデックスを
>> http://〜/cgi-bin/namazu.cgi.exe?idxname=hoge
>> と指定すると、下記のようなエラーが返ってきます。
>> 
>> namazu: D:\namazu\var\namazu\index/hoge/NMZ.head: No such file or directory
>> namazu: D:\namazu\var\namazu\index/hoge/NMZ.body: No such file or directory
>> namazu: D:\namazu\var\namazu\index/hoge/NMZ.foot: No such file or directory

  おそらく read_headfoot() 等から nmz_warn_printf() を呼び出して出力さ
れたものだと思います。これは stderr に出力する関数なのですが、Unix で 
apache 等で利用している分には、stderr の出力は HTTP の出力には反映され
ない(error.log 等に出力される)ので問題にならないようです。
  IIS は違うようですが、apache 以外でも同様の挙動をする実装がないとは
いいきれません... ということで確かに問題ですね。

  さしあたっての workaround としては... Unix なら例えば以下のような
wrapper を作成すれば回避できると思います。
-- 
#!/bin/sh
exec /usr/local/www/cgi-bin/namazu.cgi 2>/dev/null
-- 

  IIS はあまり使ったことがないのでよくわかりませんが、どなたか有効そう
な workaround をご存知ないでしょうか?

  それからどのように修正すべきかも問題ですが、

1. nmz_warn_printf の出力を抑制可能に
2. nmz_warn_printf の出力を escape

  どちらが良いでしょうか? 前者は完全な対応とはいいがたいですが、escape
を期待しない環境では後者だと困ることもありそうです。
-- 
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx
	knok@xxxxxxxxxx / knok@xxxxxxxxxx