連載
» 2013年09月05日 18時00分 UPDATE

UXClip(35):HTML5時代のWeb開発者が知らないとガチヤバな3つの未来予測と6つの脆弱性対策 (1/2)

CEDEC 2013のHTML5に関する2つの講演を、主にセキュリティの観点からレポート。サイボウズ・ラボ竹迫氏とネットエージェント長谷川氏が語るWebは、こんなにヤバい

[宮田健,@IT]

 8月21〜23日にパシフィコ横浜で開催された「CEDEC 2013」では、Webの世界に関するセッションも数多く行われた。本記事ではその中から、サイボウズ・ラボの竹迫良範氏による「HTML5のこれまでとこれから、最新技術の未来予測」と、セキュリティコミュニティでは大変著名なネットエージェント、長谷川陽介氏による「HTML5時代におけるセキュリティを意識した開発」の2つのセッションの様子をお送りしよう。

竹迫氏が「HTML」の周りの最新技術と、3つの未来予測を語る

未来予測その1:通信は暗号化が標準に――「スタバでドヤリング」から考える最新技術

uxclip35_1.jpg サイボウズ・ラボ 竹迫良範氏

 竹迫氏はまず、スターバックスでスタイリッシュなMacBook Airをこれ見よがしに使う、「ドヤリング」という技術(?)について写真を出すところから講演を始めた。

 実は、この「ドヤリング」、公衆無線LANを利用すると盗聴のリスクがあることが指摘されている。Firefoxのプラグイン「Firesheep」を利用すると、暗号化されていない公衆無線LANにおいて、同じネットワークにつながるクライアントの通信を傍受できる(参考:エフセキュアブログ:「Firesheep」:複雑だったことを容易にするツール)。

 しかも、著名なWebサービス―― Facebook、Twitter、Google、Amazon、Dropbox、Evernote、WordPress、Flickr、bit.lyなど―― へログインしているユーザーを探し出し、そのユーザーに“なりすます”ことが可能なのだ。この対策として、HTTPSなど、SSLを利用したプロトコルを使う必要がある。

 このツールの登場で、GitHubはSSL接続によるサービスに切り替わった。GitHubが取り入れたのは「HTTP Strict Transport Security」(HSTS)という方式で、HTTPアクセスがあったときにHTTPSに切り替えるというものだ。ただし、現時点では対応ブラウザが少ないのが課題で、Internet Explorer 10は未対応である。

 竹迫氏はさらに一歩進めて「Outbound Port 80 Blocking」を提案する。この提案は、「HTTPのポートとして常に利用される80番ポートをブロックしてしまい、信頼できるSSL/TLS、443ポートにする」というものだ。ドラスティックな意見ではあるが、1つの提案として、とても興味深いものだろう。

 また、竹迫氏はSPDY、HTTP 2.0の登場について解説した。SPDY(スピーディ)はグーグルが開発した通信プロトコルで、いままで多くのHTTPセッションが個別に張られていたものをTLSの上でまとめて通信する技術だ。現在、SPDYは独自に拡張され、TwitterやLINEなど多くのWebサービスで利用されているという。また、このSPDYをベースにHTTP 2.0の策定が行われている(参考:OSS界のちょっと気になる話(7):次世代HTTP 2.0はSPDYの取り組みがベースに)。

 SPDY/HTTP 2.0の導入が進むと、TLSのレイヤが入ることにより通信は暗号化され、より中身が分からない世界となる。暗号化された通信はセキュアになる半面、開発時にはツールなどを使わないと解析ができなくなることは注意しておきたい。

未来予測その2:JavaScriptが重要な言語に

 次に、竹迫氏は「Acid Test」について述べた。Acid Testとは、ブラウザがWeb標準に沿っているかどうかを確認するもので、現在のAcid3はJavaScriptを含むテストを100点満点で表示するようなものになっている(参考:新Acidテストは、Webアプリケーションに焦点(2008年))。

 このような標準化の裏には、JavaScriptやCSSにおいて、ブラウザごとに解釈が異なるという問題が出てくる。例えば、CSS。HTMLにおかしな文字列が入っていた場合、ブラウザごとに処理が異なってしまうことをベースに、「CSS Hacks」というテクニックも登場した。

 しかし、この状況はHTML5の登場により大きく変わるという。HTML5では、シンタックスチェックが厳密に行われることが規定されているため、これに準拠しているブラウザであれば、エラー時にも同じ結果が出ることが定義される。

 現在、JavaScriptによりz80エミュレーターやNES(任天堂ファミリコンピュータ)のエミュレーター実装が可能なほどになっている。

 また、Node.jsの登場により、JavaScriptがサーバサイドでも動かせるようになった。同じロジックをクライアント上だけではなくサーバ上でも動かせることにより、ソーシャルゲームにおけるクラッキング/チートを前提とした「クライアントを信じるべきではない」実装において、標準開発言語としてのJavaScriptの存在感がさらに大きくなるだろう、と竹迫氏は述べる。

未来予測その3:新しいセキュアなVMが登場する

 最後に竹迫氏は、JavaScriptの処理系について触れた。

 JavaScriptはスクリプト言語だが、現在では各ブラウザの処理エンジンで実行時コンパイラ方式(JIT)による高速化が行われている。このとき、JavaScriptの処理エンジンの実装によっては、「JIT-Spray」と呼ばれる中間コードへのコンパイル時に不正なコードを実行させるような攻撃手法が存在する。

 「JIT-Spray」は、OS側が実装しているデータ実行防止(英:Data Execution Prevention、DEP)機能やアドレス空間配置のランダム化(英:Address space layout randomization、ASLR)をすり抜けてしまうため、このコードが埋め込まれたWebサイトを閲覧することで不正なコードを実行されてしまう可能性がある。

 現在、安全に、かつ高速にコードを動かすために、グーグルによるNaCL(Native CLient)/Portable NaCLによるアプローチや、「osecpu(おせくぷ)」と呼ばれるセキュアなOS/VMを作成するプロジェクトが登場している。仮想的なバーチャルマシン上で実行解析し、安全に実行しようという仕組みが今後重要な技術になるだろう。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。