あけましておめでとうございます。

あけましておめでとうございます。旧年中は大変にお世話になりました。本年も宜しくお願い申し上げます。

現時点で、IPがなかなか届かない不安定な生活をしておりまして、日記なども書きたくとも書けない状況です。雷で色々やられちまったこととか、その他プライベートで落ち着けない状況だったりします。っていうか転職先希望中。開発系は何も出来ません。昔やったことのあるシステム開発会社のSEなんて、もうコリゴリですし。システム営業をしたいなあと思っています。…こう見えても複数の企業内SEの経験があり、長年、中間管理職もしたことがありまして、企業がどんなこと考えていそうかとか、担当者とお話しするツボがわかっっちゃったりすると思うんですよねぇ。システム開発デスマーチの経験もあったりするので営業としてはSEさんとジックリ本音で意見交換しなくちゃいけないことも知ってますし。あ、そうそう、パソコンの教育事業部の立ち上げの現場部門トップもしたことあります。設営って大変ですよね。事業そのものは企業の都合で撤収しちゃったけれど。いちお、企業内パソコン研修講師に教育方法を教える講師(なんだそりゃ)をしたこともありますし、企画立案して有力企業の研修コースを営業してまわったこともありますです。なんだか筆がすべっていますが、まあお許し下さい。くだけすぎました。

Operaユーザが気をつけるべきXSSアタックベクター

Opera社の中の人とちょっとだけやりとりしたのですが、以下でjavascriptが起動してしまうことはOperaブラウザとしては、RFCやHTMLの仕様に厳格に従った仕様であるとのこと、Operaとしては修正する予定はないようです。

<img
style="background:url(&quot;javascri\dpt:alert('XSS vector')&quot;)"
>

javascript擬似スキーム中に \d やそのほかもろもろの制御コード、あるいは変な文字がはいっていたら、Operaブラウザは、いわゆる標準仕様に鑑みての解釈を行い、unsafeな文字であると判断するならば、それらをなかったものと扱う、早い話が削除する、そういうOpera仕様なわけです。つまり、変なものを差し込んでもそれらは無視されるのでjavascriptは作動してしまいます。なお、私が知る限り、このOpera仕様では、img要素のhref属性においては既知のものだけ心配すれば良さそうなのですが、スタイル要素やスタイル属性においては、公(おおやけ)において既知でないものも心配しなければならないという強い傍証を私は得ています。

…unsafeなものを削除してもイタチごっこなのですがねぇ。それはそのままにしておいて期待されない作動を引き起こさないで頂きたいと思うのですが。

Operaも含め各ブラウザの開発元は、かくかくしかじかの時にスクリプトが作動するという詳細かつ漏れのないサンプルの一覧表を提供すべきと考えます。CGIやWebアプリの開発者、あるいは利用者は、そのサンプルの一覧表を元に、開発したい、あるいは利用したいシステムを簡単にテスト出来るようになることでしょう。例えば、以下のようなケースにおいて、Operaはどのような挙動を示すのか、といった按配です。ブラウザ開発元提供の一覧表にはこんなのがたくさんあればあるほど宜しい。

[HH]は16進数2桁。
style="background:url(&quot;javascri\&#x[HH];pt:(function t(){alert('00')})();&quot;)"

上記の見所は\&#x[HH];なところです。Operaでは、[HH]を 0C に置き換えると、javascriptが起動してしまいます。 0C は ASCII では FF、フォームフィードのことなんですが、なにゆえこれが許されるのか、さっぱりわかりません。\&#x[HH];や、フォームフィードの取り扱いについて、標準仕様を読みながら気がつき、XSS攻撃への防御に役立てられる人は、恐らくほとんどいないと私は確信しています。キャリッジリターンや水平タブとかなら、まだしも理解しやすいのですがねぇ。ああ、アレね、という按配で。それに上記で\&#x[HH];からバックスラッシュを取り除くとjavascriptは起動しませんが、その明確な理由もわかりません。こんなの見たことないし。

…スタイル属性内のスタイルの宣言中のプロパティやその値においては様々なエンコードやら文字参照やらが重なるのでブラウザの実装に負う(おう)ところが大きいわけです。試してみるとわかりますが各ブラウザで実装はバラバラです。ましてurl()の中身の解釈方法は本当に謎が深いです。UNICODEの取り扱いも含めて死にそうですよ。謎を解こうとしてもまず、個人の力ではどうしようもないです。防衛する立場に立つならばユーザに指摘される前にブラウザ開発元が整理整頓して仕様を公開して頂かないといけないのではないかと強く思います。

なお、Operaには、既存の大多数のXSSフィルターをすりぬけるように汚したjavascript擬似スキームの作成方法が、もうひとつあります。(なぜそうなっているのか不明なのです。)これは古畑警部補に追いつめられるイチロー選手を見ながらほとんど偶然にみつけたのです…親戚がいるはずなのですがマシンパワーがなくて手が届いていません。ま、今、Firefoxにも似たようなのを「見っけ」です。こっちは大漁なのですがどうしてもOpera同様、その理由がわからないのですよ。ブラウザの仕様の意味がわからない…といいますか虫なんだと思いたいのですがねぇ。解析がひと段落したらしかるべく報告予定です。…マシンパワーと私のボンヤリボンヤリとボタンを何千回とクリックする時間がもっと欲しいです。え?いえ、単純にループするとマシンが落ちるんで適宜alertを差し込んでいるんですがこれがまた退屈でして。それに物理時間的にそろそろ限界ですし。