[Nkf-dev 10] Re: eucJP-msのマッピング変更について

Back to archive index

Tadamasa Teranishi yw3t-****@asahi*****
2006年 1月 31日 (火) 17:07:13 JST


寺西です。

"NARUSE, Yui" wrote:
> 
> Tadamasa Teranishi wrote:
> >>1. 脆弱性の範囲
> >>ふと思ったのですが、この脆弱性情報を見直すと、
> >>これって任意のUCSからの多対一変換全てが問題になりませんか。
> >
> > 全ての多対一の問題ということではありません。
> 
> 例えば、
> U+301C U+FF5E という名前のファイルが存在したとき、
> EUC-JP等に変換した後にUnicodeに戻すと、
> マッピングに関わらず、U+301C U+301C または U+FF5E U+FF5E
> という名前に化けるかと思いますが、

ここはもともと U+00A5 が パス区切りである U+005C になる問題を指して
いるのですが、指摘のようなことを考えると、多対一の問題ということに
なるかもしれません。

本来 問題1 は、
パス区切りである U+005C になることで、任意のディレクトリにアクセス
できてしまうディレクトリ・トラバーサル問題を説明したものです。

ただ、拡大して解釈すると、多対一の問題で目的のファイル以外に
アクセスする可能性は否定できないので、別の問題はあるということ
になるかもしれません。(ディレクトリ・トラバーサルの方がより大きな
問題ですが。)

あくまでも本来の意味の 問題1 は、多対一の問題ではありませんので、
その問題と、多対一の問題は分けて考える必要があるでしょう。

ちなみに、U+301C U+FF5E という名前のファイルを ANSI 版 Win32 API 
でファイル名を取り出すと、"?〜" となり、U+301C U+301C または 
U+FF5E U+FF5E でもないものになってしまっています。
たぶん、CP932 に U+301C のマッピングがないからでしょう。
他の文字ならおそらくは同じことになるとは思います。

ただ、後者が問題になるのは実際は少ないはずです。もちろん危険性
はゼロではありませんが。
というのも前者の場合は、悪意のある人物が作成したファイル名の
ファイルを仕込むことで、任意のディレクトリのファイルにアクセス
できるのが問題ですが、後者の場合は悪意のある人物が作成した
ファイル名でアクセスできるのは、マッピングによって変更された
ファイル名のファイルのみだからです。

そもそもそういったファイル名のファイルがなければアクセスできません。
また、そのようなファイル名のファイルを作ることはできますが、
IMEパッドで文字コードを指定するとか、少々特殊なことをしない
と入力できない場合がほとんどなので、そういったファイル名のファイルが
存在する可能性はたぶん低いはずです。

後者は、セキュリティ上の問題よりもむしろ目的のファイルに
アクセスできないことがあるというトラブルの方が問題でしょう。
(UNICODE の方が文字が多いのですから、多対0 というのもあるので、
コード変換すれば何かしら起こる問題です。)

ANSI 版 Win32 API を使う限り、前者、後者の問題は発生しますので、
アプリケーションの脆弱性というよりは OS の脆弱性だろうとは思い
ます。(95系だと UNICODE 版 Win32 API は使えないはずですし。)
# それをアプリケーション側の責任にする Micro SoXt って...。

話がそれてしまいましたが、前者の問題だけを考えると、(問題2も加えると)
US-ASCII 以外から US-ASCII にマップされるのが問題だということです。

ところでこの問題。第三者に任意のファイル名のファイルの作成を許可
しているのが、運用上の最大の問題であり、普通はこのような脆弱性が
問題になることはありません。というか、普通はそんなこと許可しません
から。

> そのような使い方はnamazuではしていないということですかね。

Namazu はもうちょっとゴニョゴニョしていますが、それは Namazu の
問題なのであまり気にしなくて良いかと思います。
# そのうち UNICODE で直接処理しますし。

> > ここの話について言えば、
> > US-ASCII 外から US-ASCII に変換されるのは全て問題ということ
> > になります。
> > US-ASCII の範囲に特殊な意味を持たせてキャラがありますから。
> >
> > となると、その変換を抑止するオプションがあれば良いということ
> > になりますかね?
> 
> eucJP-msのマッピングに関わらず、
> CP932を似た用途で使いたいケースもあるでしょうから、
> そういうオプションはあったほうがいいかもしれませんね。

そうですね。

> 悩むのはオプション名ですか。

確かに。

> >>U+301Cのマッピング等は利便性を考えると残しておきたい気もして。。
> >
> > 具体的にはどのような利便性でしょう。
> 
> もともとUnicodeにする際にどのようなマッピングを用いたか忘れた場合や、
> 最初からUnicodeファイルを変換する場合には、
> 多少ルーズなほうが便利だとは感じます。

そういうのは eucJP-ms とかではなくて、別の名前の方が良いような気は
します。(もっとも、これ以上マッピングを増やすのが良いとも言い切れ
ませんが...。)
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-****@asahi*****
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




nkf-dev メーリングリストの案内
Back to archive index