新たに提起されたクロスサイトトレーシング攻撃手法

セキュリティホール memo の (2006.01.27 いろいろ) を読んでいたら、XST Strikes Back::SecuriTeam という記事が紹介されていて興味深かったです。

   var x = new ActiveXObject("Microsoft.XMLHTTP");
   x.open("\r\nTRACE","/",false);
   x.setRequestHeader("Max-Forwards","0");
   x.send();
   alert(x.responseText);

IEでは 改行を入れた TRACE が発行してしまうのですか。XST(クロスサイト・トレーシング)について国分さんが以下に記事を書いていますね。XSSに似ているけれどBasic認証をも突破できるという話題が記憶に残りました。確か javascript でハンドリング出来ないように HttpOnly 属性をつけてある cookie も奪取されちゃうので、せっかくjavascriptオフでブラウジングしていても困ったことになるのではなかったかなぁ。えむけいさんのご指摘にて上のトンチンカンなところを削除しています。ありがとうございました。さて、国分さんの記事に話を戻します。

以下の水無月ばけらさんのクロスサイトトレーシングの解説もお勧め。

思い出しましたけど、ええとXSTとは直接関係ありませんが、そもそもBASIC認証なページはSSLで保護しなくちゃ駄目だったような気がします。cookieには HttpOnly 属性 ばかりに頼らず secure 属性をつけましょう、だったっけかな?御指導求む。

Re:GoogleサイトにXSS脆弱性、セキュリティ企業の指摘で修正(エンコーディング変更によるXSS攻撃)

エンコーディング変更によるXSS攻撃の可能性について補記

すいぶんと前になりますが既に2004年11月において、UTF-7まわりでのこの種の危険性を指摘している文献がありました。svgばなしですけれど精神は同じです。防衛のためにもっと早く世間に認識されると良かったかも知れませんね。

以上は当日記(2005-12-22)のGoogleサイトにXSS脆弱性、セキュリティ企業の指摘で修正(エンコーディング変更によるXSS攻撃)への追記です。

Suddenly everything clicks

XPの広告とラクガキ

Linux の x の字が Windows へのペケマークとなっています。秀逸。

#私はアンチMSではありませんので念のため。;)

6枚のコインと秤::回答編

問題編は当日記内の以下のページにあります。

tamoさんから弟さんの回答のトラックバックを頂きました。バッチリ正解ですね、有難うございます。以下に記事があります。図解入りわかりやすいです。まずはご覧下さい。

さて、私は上記回答を見て暫く絶句しました。特にコイン d が偽だったらどうするのだろうと悩んだのです。暫くしてわかりましたので、弟さんの回答に準拠して、わざわざ(私風に)難しく?書いた説明を下記に。すみませんがなんの意味も無くpre要素で括ります。【謎】

(1): s = d+e+f を計量する。
(2): t = a+b+d+e を計量する。
(3): 残りの計量回数は1回。(1)と(2)の結果に基づき残りの計量方法は分岐する。

(3)-1: もしも 4s = 3t ならば c が偽物である。cを計量して終了。

(以下、容疑者は abdef 。)
(3)-2: u = a+d を計量する。
これ以上計量できない。以後、結果に基づき計算しながら分岐する。
偽重量が判明すれば真重量も判明することに留意のこと。

(3)-2-F: もしも 4u = 2t ならば この式に参加している a,b,d,e は無実、f が偽物である。
f = s-u にて偽重量判明して終了。 

(以下、容疑者は abde 。)
(3)-2-B: もしも 3u = 2s ならば この式に参加している a,d,e は無実、b が偽物である。
b = t - s にて偽重量判明して終了。

(以下、容疑者は ade 。真のコインの重量をXとして、ここまでの計量結果を書き直す。)
s = d + e + X
t = a + d + e + X
u = a + d
ここから直ちに、a = t - s がわかっていることになる。

(3)-2-E: もしも a + d = u = 2(t-s) = 2a ならば a = d 。a,d は無実、e が偽物である。
e = s - u にて偽重量判明して終了。

(以下、容疑者は ad 。真のコインの重量をXとして、ここまでの計量結果を書き直す。)
s = d + 2X
t = a + d + 2X
u = a + d
ここから、ただちに
2X = t - u
2X - a = s - u
が判明する。
ここまでの計算結果により以下の二つの場合のどちらかが成立しているはずである。

(3)-2-A: 6X = 3(t-u) = 2s = 2(d + 2X)が成り立っていれば、
d についてのみ X と比較ができたことになり、d は無実、a が偽物である。
a = t - s で偽重量判明して終了。
(3)-2-D: 2X = (t-u) = 2(s-u) = 2(2X - a) が成り立っていれば、
a についてのみ X と比較ができたことになり、a は無実、d が偽物である。 
d = s- (t-u) で偽重量判明して終了。

以上で偽コインの判別と偽コインの重量はわかったので本物のコインの重量も適宜計算で判明します。

弟さんのするどい予想、6 個のコインを 3 個の囲いですべて区切る、あるいは、3 個の囲いはそれぞれ違う大きさでなければならないという説がもしも真ならば、この種の問題で秤3回で識別可能な最大の枚数は6枚であると予想できるかも知れません。手に余りますが、何か等価な問題に置換できれば見通しが良くなるかも知れませんね。ディオファントス方程式周辺に帰着できないかしら?などと空想。その為にも有理秤が用意されているのではと…(てへ)