誕生から10年近い 現在のHTML仕様は,疑いの余地なく,そして良くも悪くも,ソフトウェアアーキテクチャおよびソフトウェア工学に革命を起こしてきた。その重要な資産を 近代化する準備を産業界が整えた現在において,IDG News の Joab Jackson 氏は先週,HTML5 に関する既知のセキュリティ問題を要約する記事を執筆した。
HTML5 は,[...] 本格的な Web アプリケーションを構築するために併用される,緩やかな相関関係を持った標準規格のコレクションを表すためによく使用される名称です。HTML5 は ページフォーマット や オフラインデータストレージ,あるいは イメージ描画 といった面で機能を提供します。(W3Cの仕様ではありませんが,Web アプリケーションの構築に広く利用されている JavaScript も,規格のひとつとして加えられることがよくあります。)
"Web アプリは HTML5 によって信じられないほどリッチになってきました。ブラウザは今や Web ページだけでなく,完全なアプリケーションの管理をも行うようになっています。”と,Mozilla 財団で Firefox のセキュリティ問題を担当する Sid Stamm 氏は言います。そこには考慮しなければならない攻撃面もたくさんあるのです。
Ian Hickson 氏は 規格編集者として,次のように説明する。
HTML5 は “HTML 言語を,Web アプリケーションをより良くサポートするために拡張する” ためのものです [...] このため HTML は他の技術,特に Flash や Silverlight と直接的に競合する立場に置かれることになりました。
仕様自体は攻撃を積極的に防ぐため,細心の注意が払われているようだ。例えば,
ユーザエージェントでは,動画をフルスクリーン表示する API を公開すべきではありません。巧妙に作成されたビデオファイルとスクリプトを組み合わせれば,ユーザにシステムモーダルなダイアログであると見せかけて,パスワードを入力させることが可能になるためです。さらに,リンクのクリックやページ移動時にフルスクリーンの動画ページを表示するという,"単なる” 迷惑行為の危険性もあります。代わりとして,ユーザがフルスクリーン再生モードを簡単に選択できるように,ユーザエージェント特有のインターフェースを提供してもよいでしょう。
セキュリティ研究者である Lavakumar Kuppan 氏の説明によれば,
"HTML5 は Web に多大な機能とパワーをもたらします。今ではプレーンな HTML5 と JavaScript を使うだけで,これまで可能であったよりもはるかに多く [の悪意ある行為] を行うことができるのです。
記事では特に,アプリケーションキャッシュ攻撃について詳しく述べている。
キャッシュに関して重要なのは,オープン WiFi のようなセキュアでないネットワークに接続した瞬間に いとも簡単に汚染される 場合がある,という点です。Facebook や Twitter などの JavaScript ファイルを侵すことによって,攻撃者は最終的にアカウントの操作権を獲得できるのです。
アプリケーションキャッシュを侵略する,あるいは悪意を持ったキャッシュを生成する,という手段を使えば,HTTPS のみを防御手段とする Web サイトの認証情報はすべて攻撃者に盗まれてしまいます。
セキュリティコンサルティング会社 Secure Ideas の侵入テスタである Kevin Johnson 氏は,次のように説明する。
HTML5 では,数多く存在する新機能そのものが自身に対して脅威を形成しています。つまり攻撃者が何らかの危害を与えるための手段として,ユーザのブラウザを利用する方法の選択肢が増えているのです。
"これまで長い間,セキュリティ問題の中心は脆弱性にありました -- バッファオーバフロー,SQL インジェクション攻撃などです。私たちはパッチを当て,問題をフィックスし,監視することを続けてきました”,と Johnson 氏は言います。しかし HTML5の場合には,機能そのものが "私たちを攻撃するのに利用される" ことが多いというのです。
"これらの機能セットには恐るべきものがあります”,と氏は言います。"Web アプリケーションの欠陥を見つけて HTML5 コードを挿入できさえすれば,発見されたくない部分を隠すようにサイトを変更することも可能になります。"
Mozilla はすでに,HTML5 アプリケーション強化のための新しいプラグイン技術である JetPack の開発を始めている。
JetPack の目的は,プラグインが実行するアクションに対する,より厳密なコントロールの確保にあります。"[アプリケーションプログラミングインターフェースを] 完全にコントロールできれば,ユーザに 'このアドオンは Paypal.com へアクセスしようとしています。許可しますか?' と確認することも可能になるでしょう。" と Stamm 氏は言っています。
さらに JetPack では,宣言型のセキュリティモデルを使用します。プラグインはブラウザに対して,実行しようとする各アクションを宣言しなければなりません。そしてブラウザは,プラグインがこのパラメータの範囲内に留まっていることを監視するのです。
すべての人が,この仕様プロセスの結末に満足しているわけではない。
"業界ではこれらの機能のために,新しいブラウザを展開する価値があるかどうか評価を始めています。" と Johnson 氏は言います。"'[Internet Explorer] 6の方がまだましだったよ' という意見が聞ける,数少ない例のひとつになるかも知れません。
興隆する ネイティブ(モバイル)アプリケーションに対して,HTML5 は十分な回答になり得るだろうか,あるいは時すでに遅く,内容も不十分なのだろうか? HTML5 のプログラミングモデルは,ネイティブアプリと対等に競うにはあまりにも貧弱なものにならないか? W3C は従来技術との互換性確保に腐心するよりも,本格的な Web ベースのプログラミングモデル構築に力を尽くすべきではないだろうか? シンクライアントは今でも魅力あるコンセプトだろうか,それとも Web の重心はサービスに移りつつあるのだろうか? セキュリティに関する問題は,消費者からテクノロジ信仰を消し去るだろうか? この10年間で世界は大きく変化を遂げた。"これで十分" がもはや通用しない消費者主導のマーケットにおいて,ユーザエクスペリエンス,セキュリティ,そしてビジネスモデルが人々の共感を勝ち得ている。あなたの見解はどうだろうか?