Web 2.0ではコンテンツの多様化により問題が深刻化
Web 2.0におけるセキュリティについて、浦本直彦氏にうかがった。浦本氏は日本IBMの東京基礎研究所、次世代Webインフラストラクチャの次長であり工学博士でもある。IBMの基礎研究部門は世界8か所にあり、開発グループやサービス部門と協力して先進的なテクノロジを研究している。浦本氏は「『Web 2.0に特有のセキュリティはあるのか』という質問をよく受けますが、これはWeb 1.0とWeb 2.0がどう違うのかということと同じで、基本的には従来からある脅威と同じものが存在します。ただし、Webアプリケーションを取り巻く社会の方が変わってきたことで、より問題が深刻化しています」という。
Web 2.0によって我々を取り巻く社会の方が変わった点を、大きく2つに分けることができるという。一つは、情報(コンテンツ)がコモディティ化し、信頼性や価値が相対的に低下したこと。もう一つは、コモディティ化に伴ってシステムやコンポーネントの作り方や実行環境が変わってきたことである。情報のコモディティ化という観点では、以前は企業や限られた一部のユーザーがインターネットで情報を発信していたが、現在では子供や主婦、高齢者など、幅広い年代のユーザーが、いつでもどこでも情報を発信できるようになった。このようなITに疎いユーザーでも情報を発信できるようにしているのは、Web 2.0の技術が支えているためだと言える。
このような情報のCGM化(注1)によって情報そのものの量が増え、情報の信頼性や価値が希薄になると同時に、さまざまな脅威が表面化してきた。プログラミング上の問題では、クロスサイト・スクリプティング(XSS)や、クロスサイト・リクエストフォージェリ(CSRF)が挙げられる。XSSは、悪意のある第三者が攻撃対象となるサイトに入力フォームなどを通してJavaScriptなどのコードを押し込み、そこにアクセスしたユーザーの個人情報を盗み出すなど、意図しない操作を実行させるものである。またCSRF攻撃により、例えばショッピングサイトのセッションを乗っ取り、ユーザーが気づかないうちに他人がそのユーザーの個人情報を使って買い物をするといった被害を受ける。ほかにもSQLインジェクションやフィシングなどの従来からの攻撃に加えて、XSSやCSRFは、Web 1.0の時代から存在するものであるが、情報のコモディティ化によって攻撃の機会が増え、顕在化してきた。また、コンテンツの内容に関する問題では、ブログに書いた内容によって誹謗、中傷を受けたり、会社の評判を落としたり、といったケースがある。
Consumer Generated Media;消費者生成型のメディア。
一方、コモディティ化に伴ってシステムやコンポーネントの作り方や実行環境が変わってきたという点では、AjaxのようなWeb 2.0技術の普及により、Webブラウザが静的なHTML文書の閲覧環境から、動的なコンテンツやWebアプリケーションの実行プラットフォームとなってきたため、ロジックがクライアント側でも動くようになった点をあげよう。つまり、従来サーバー側を主に守っていればよかったセキュリティが、クライアント側でのプログラム実行にも注意を払う必要が出てきた。この意味では、守るべき範囲が広くなったということになる。
また、Web 2.0ではWebブラウザ上に複数の機能やAPIをコンポーネント化してマッシュアップしている。Web 1.0の時代には、複数の会社のサービスを横断して組み合わせることはあまり考えられなかったが、Web 2.0ではそれが可能になり、またそこにマッシュアップとしての大きな可能性がある。このためシステムやコンポーネントの作り方が変わり、それに合わせてセキュリティ上の要件も変わってきている。例えば、Web 2.0ではWebブラウザ上に異なるドメインのサービスを組み合わせているが、そもそもWebブラウザに実装されているセキュリティポリシーは、あるサイトからダウンロードされたJavaScriptコードが他のサイトにアクセスすることを抑制する(このポリシーはSame Origin Policyと呼ばれている)ものであり、マッシュアップは想定されていないシナリオだといえる。
さらに、Webブラウザは、信用できないドメインではJavaScriptを無効にすることもできるが、現在では多くのWebページでJavaScriptが使用されているため、ドメイン単位で無効にしてしまうとサービスそのものが動かなくなってしまうし、上で述べたXSSでは、悪意を持ったコードが信頼できるサーバーから送られるため注意が必要である。このように、Web 2.0時代では従来のWebブラウザのセキュリティモデルが陳腐化していると言えるだろう。
では、このようなWeb 2.0時代のセキュリティについて、浦本氏のチームはどのように取り組み、対策しているのだろうか。「Web 2.0のセキュリティは、2006年頃から取り組んでいます。Web 2.0はそもそもコンシューマが簡単に利用できることを目的としていたので、セキュリティについてはあまり議論されていませんでした。しかし現在ではエン タープライズ向けのサービスも多くなり、企業での利用も増加しています。そうするとセキュリティは欠かせないものとなり、IBMがそれを提供することに意味が出てきます。ポイントは、ユーザービリティなどのWeb 2.0の良さを損なわずにエンド・ツー・エンドのセキュリティを提供することです」という。
IBMは、より良い効果を期待できるさまざまな製品を自社ブランドに取り込んでいる。Web 2.0のセキュリティに有効な製品としては、まず旧Watchfire社の「Rational AppScan」がある。この製品はWebアプリケーションの脆弱性評価ツールで、特定のURLを入力するとトップページから下の階層までをクロールして、ページの情報をためた上でさまざまな疑似攻撃を行い、脆弱性がないかをチェックする。具体的には、入力エリアがあるとそこにスクリプトコードや予想外の値を入れるといったテストを自動的に行い結果をレポートする。このほかにも旧インターネットセキュリティシステムズ(ISS)のセキュリティアプライアンス製品や、古くからある「Tivoli」製品などが有効としている。
浦本氏のチームでは、これらの製品ではカバーできない部分について研究を進めているという。「現在、2つのプロジェクトが進行しています。一つは『セキュアマッシュアップ』で、これは例えば企業でWeb 2.0を利用する場合、信頼できるコンポーネントとそうでないものを組み合わせることがあります。ブラウザ上では一つのサービスになっているため、信頼できないコンポーネントをハッキングされると、そこから顧客データなど機密情報が入ったコンポーネントにアクセスされる可能性があります。個々のコンポーネントを孤立化させて通信できなくすれば安全ですが、それではマッシュアップした意味がありません。そこで、USのワトソン研究所と共同で、コンポーネント同士のセキュアな情報アクセス制御技術を研究しています。IBMはこの技術の実装を、Ajax技術の普及を目指す業界団体であるOpenAjaxに寄付しており、ゆくゆくは標準化してIBMの製品に組み込むことを考えています」。
「もう一つは『アクティブコンテンツフィルタ』で、これはWebアプリケーションをチェックしてHTMLやJSON、Feedといったコンテンツ中のJavaScriptコードを見つけ出し、設定条件に基づいてそれらを除去するというものです。この機能は、既にいくつかのIBM製品 に搭載されています」という。
最後に、研究を通じて心がけていることや感じていることをうかがってみると、「開発者は必ずしもセキュリティの専門家ではありません。そこで、信頼できるツールをうまく使い、ベストプラクティスを学んでいく必要があります。しかし、やはりセキュリティは『イタチごっこ』の世界で、攻撃者は通常では考えられないような手法を次々と使ってきます」。
「また、現在のように多数のWebブラウザが混在している状況は問題であると感じています。ブラウザはバージョンによってさまざまな脆弱性が存在し、そこに組み合わされるプラグインも同様で、これらを乗算した環境が存在しているのが現状で す。このすべてを検証するわけにはいきませんから、できるかぎりブラウザに依存しないようなソリューションやブラウザのセキュリティモデルを共通化していくことが必要になってくるでしょうね。これは、いろいろなフレームワークを使用しているサーバー側にも同じことが言えます」。
「セキュリティに100%はあり得ません。そこで私たちは複数の技術を組み合わせてより100%に近づけていこうと研究しています。Web 2.0ではサーバーとクライアントの両方にセキュリティ対策が必要で、またマッシュアップしていく上での落とし穴も存在します。あまり表に出るような技術ではありませんが、技術を組み合わせてエンドtoエンドでサービスを提供していくことは、IBMの得意分野なのです。今後も様々な技術が提供される予定です。ご期待ください」と締めくくった(聞き手/吉澤)。
豊富な機能でリッチなWebアプリの開発をサポートする「Dojoツールキット」
オープンソースのJavaScriptライブラリ『Dojoツールキット』の情報を発信している野口氏は「RIA(Rich Internet Applications)と言うと、これまでFlashなどのようにプラグインを追加して実現していましたが、Ajaxが定着し、ブラウザの標準機能も向上している現在では、ピュアなブラウザの機能だけで実現できます。核となるのはJavaScriptですが、ブラウザごとの仕様の違いを吸収しながらコードをゼロから自前で書くのは大変ですので、ライブラリを活用してWebのフロントエンド開発の生産性を向上させます」と背景を語る。Dojoツールキットはメジャーなブラウザに対応し、iPhoneのSafari上で動作するWebアプリケーションも作れるという。
Dojoツールキットは、IBMが当初から持っていたコードをオープン化したEclipseとは違って、もともとあったプロジェクトにIBMが賛同したものだ。JavaScriptライブラリはほかにも『jQuery』や『prototype.js』などがあるが、IBMがDojoツールキットを選んだ理由は、大規模なアプリケーション開発を想定した豊富な機能を持っているからだという。JavaScriptの記述は、関数の集まりで、C言語に近い。Dojoツールキットはクラスを定義するフレームワークもあり、さらにそれを拡張したり多重継承したりと、C++やJavaに近いような一貫性のある言語機能を提供していると野口氏は説明した。
ある程度規模の大きいアプリケーションの場合、複数のJavaScriptファイルを読み込んで各ファイルをお互いリンクさせるようなやり方では実現が難しくなり、機能のモジュール化が必要になる場面もある。Dojoツールキットの場合はモジュールごとの依存性を記述でき、その依存性に基づいた処理が可能だ。例えばあるモジュールを使いたい場合、それが中でほかのモジュールを使っているかどうかについて意識しなくていい。機能が豊富なため、ほかのライブラリと比較してコード量は多い。しかし、一部のモジュールしか利用しないのに大量のコードがロードされる必要はなく、スタートアップに必要なモジュールをパッケージ化して読み込んだり、遅延読み込みができたりするなど、パフォーマンス面での配慮もある。
開発においての恩恵もみられる。これまで、JSPなどのサーバーサイドの技術を使う場合、フロントエンドのデザイナーと、実際にロジックを入れていくデベロッパーで同じファイルを扱う場合、デザインを変更する際、JSPのタグをデザイナーが壊してしまうケースなどは、非常に頭の痛い問題であった。しかし、標準的なHTMLとJavaScript、CSSというオープンな構成となっているため、デザイナーとデベロッパーがある程度切り分けて作業が可能になった。
Dojoツールキットに対して、IBMのエンジニアが大きく寄与したのは、国際化とアクセシビリティだ。IBMの製品として出荷するには、10の言語をサポートしなければならないというルールがある。先日出荷したJazzのツールでは、Dojoツールキットの文字列部分(メッセージのラベルなど)を別ファイルにしてバンドルできる国際化の機能が役に立ったという。アクセシビリティについては、例えば、政府に納品するアプリケーションの場合は、すべての人が使えるようになっていないと不適格となる。以前は「JavaScriptがなくても動作する」といったこともアクセシビリティの条件となっていたが、現在では現実的ではなくなっており、W3CでもARIA(Accessible Rich Internet Applications)という仕様が登場して、Dojoツールキットはいち早く実装した。
ほかに注目すべき点は、Widgetセットで、タブやアコーディオン形式、ツリー形式などのナビゲーション表示やデータグリッドやコンボボックス、テキスト入力時のサジェスト機能、円グラフ・棒グラフ・折れ線グラフなどのチャート機能といった基本的なツールはすべて揃っている。それらのツールをWidgetと組み合わせることで、例えば、クライアント側の操作でデータが変更された場合に、サーバと通信しないでブラウザ側の計算だけでグラフを変化できる。データグリッドがサーバ側のCSVやXMLのデータを読み込んで表示するAPIもあるので、データグリッドのWidgetを用意しておけば、データの読込先を変えることでいくつものデータを扱うこともできるという。
表現力に関しては、線や矩形を書くといった二次元の描画やフェードインやフェードアウトなどPowerPointの書類に見られるような基本的なアニメーションも実装可能だ。ほかにもドラッグ&ドロップのモジュールを使った、デスクトップアプリケーションに近いようなWebアプリケーションも作れるといい、これらの機能を使ったアプリケーションを披露してくれた。
以前のバージョンでは、動作が重いという問題もあったが、現在はほかのライブラリと遜色のないパフォーマンスになっている。Dojoツールキットが使われているサイトとしては、「Apple Store」の一部や「任天堂Games」「シャッフルカードじゃらん」などがあり、IBM製品で言うと、『IBM Mashup Center』『WebSphere sMash』やJazzのツールでも使われている。また『WebSphere Application Server』のユーザーには、Feature Pack for Web 2.0という形でDojoツールキットを無償提供している。
非常に多彩な機能でアジャイルな開発を実現するDojoツールキットだが、死角はないのだろうか。野口氏は「まだまだ若い技術なので、技術情報はまだ足りていません。それが課題です。今年になって英語の本は4冊出ていますが、それらの翻訳含めた、日本語の技術情報の発信にも取り組んでいきたいと考えています。また今後期待したいのは、開発ツールです。今のところFirefoxにFirebugを入れて地道にやっている形ですので、統合的な開発環境は不足しています。『Rational Application Developer Version 7.5』では、Dojoのサポートが入ってきました、今後それが発展してよい開発環境ができてくると裾野が広がってくると思います。それから、Web 2.0のよいところを活かしたうえで、セキュリティやスケーラビリティを強化していくことも課題です」と、課題と展望について語った(聞き手/森)。
最終回の後編では、須江信洋氏による、Java言語をベースに構築されたスクリプト言語「Groovy」の解説と、米持幸寿氏が語る、IBMソフトウェア・テクノロジーのポリシーや今後の活動についてレポートする。