[Namazu-devel-ja 1207] Re: Namazu 2.0.17 のリリース準備

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2006年 9月 9日 (土) 16:34:38 JST


寺西です。

NOKUBI Takatsugu wrote:
> 
> At Sat, 09 Sep 2006 00:57:44 +0900,
> Tadamasa Teranishi wrote:
> > NMZ.head, NMZ.footで {cgi} {doc} を複数使用した時で、置き換え時にバッ
> > ファサイズよりも長くなった場合、バッファオーバーフローを起こします。
> >
> > ただ、あまり詳しく書かなくても良いかもしれません。
> 
>   うーん、一応「こうすれば運用で回避できる」ということをしらしめる意味
> ではやっぱり書いたほうがいい気がします。もちろんいいことではないのです
> けど。

なるほど。

従来の処理はこんな感じでした。

テンプレートの {cgi} を SCRIPT_NAME の内容に、{doc} を DOCUMENT_URI
の内容に書き換えます。この時、バッファをSCRIPT_NAMEとDOCUMENT_URIの
サイズ分(+1 何故か??)だけ拡張します。("{cgi}", "{doc}" 分の 5x2=10
バイト分は余計に確保されています。)

デフォルトのテンプレートには {cgi} が2個、{doc} が0個書かれています。
SCRIPT_NAME が DOCUMENT_URI より長いことは普通はないので、
デフォルトのテンプレートを使う({cgi} を2個書いている場合)は、バッファ
サイズに収まります。

テンプレートをカスタマイズした場合でも、{cgi} と {doc} がそれぞれ 1個、
あるいは、{cgi} が 2個だけの場合は、バッファサイズに収まるでしょう。
しかし、それ以上に {cgi} {doc} を追加した場合には、バッファサイズを
越える可能性があります。
もっとも、確保したサイズが SCRIPT_NAMEとDOCUMENT_URIのサイズ分 +1 + 10
なので、{cgi} {doc} の展開したサイズがこれ以内に収まっている場合は
問題が起きません。

また、テンプレートはファイル単位にバッファを確保しますので、
NMZ.head と NMZ.foot と合わせて {cgi} が3個であっても問題ありません。

ということです。

なお、サイト管理者側の設定なので、サイト攻撃者がどうこうできる話でも
ないので、危険度はそれほど高くはないはずです。

> > 強調表示を無効にする方法というのが思いつきませんが、無効にしても回避
> > はできないと思います。
...
>   これは勘違いでした。確かにできないですね。なぜかできるものだと思って
> いたのですが、それは単にEmphasisTagsを空っぽにすればいいとかそんな感じ
> でしかできそうにないです。どちらにしろ処理は通るのでだめですかね...

はい。強調処理ルーチンのバグなので、EmphasisTags の中身には依存しない
はずです。たぶんEmphasisTagsが空なら何もしないとかって特別なことは
していなかったと思いますから。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-devel-ja メーリングリストの案内