Firefoxに対する攻撃を防御、WebAssemblyを利用したサンドボックスが役立つ:Windows版にも適用可能
「WebAssembly」を使ってWebブラウザをサイバー攻撃から保護する仕組みをテキサス大学の研究者らが開発した。現在は「Firefox」で効果を検証しており、今後は全面的に適用される見込みがあるという。
Webブラウザに対するサイバー攻撃を防ぐ仕組みを大学の研究チームらが開発、2020年2月25日にサンドボックスを利用した保護策を発表した。
開発したのはテキサス大学オースティン校やカリフォルニア大学サンディエゴ校、スタンフォード大学、Mozillaの研究者のチーム。
Webブラウザのコードの一部を“安全なサンドボックス”に移すことで、悪意あるコードによるユーザーPCの乗っ取りを防ぐ仕組みだ。既に「Mozilla Firefox」のうち、Linux版のテストリリースに導入済みだ。
具体的にはWeb標準のプログラミング言語「WebAssembly」を利用する。WebAssemblyは、Webブラウザで実行できるコードを作成できるポータブルな低レベル言語。
どのように機能するのか
テキサス大学のホバブ・シャカム氏 カリフォルニア大学サンディエゴ校コンピュータサイエンスエンジニアリング学部の大学院生シュラバン・ナラヤン氏、同助教授のディアン・ステファン氏とともに、研究の共同リーダーを務めた
Webブラウザは、画像やビデオ、オーディオなどのメディアファイルをレンダリングする処理を進めるために、ライブラリを使用する。だが、こうしたライブラリには、未報告の脆弱(ぜいじゃく)性がある場合が少なくない。これがサイバー攻撃のきっかけになる。
テキサス大学オースティン校のコンピュータサイエンス教授を務めるホバブ・シャカム氏は次のように指摘する。
「モダンなWebブラウザには、非常に危険な側面がある。豊富な機能を提供するが、機能が多いほど、脆弱性も多くなる。脆弱性が多いほど、攻撃者がユーザーのデバイスを侵害する可能性も大きくなる」
ハッカーによる脆弱性の悪用を防ぐため、研究チームはWebAssemblyを採用した。WebAssemblyは、元々、Webブラウザ上で動作するWebアプリケーションのパフォーマンスを高めるために開発された。同時にセキュリティを高めるための仕組みも取り入れている。Webアプリケーションを“安全なサンドボックス”に配置し、悪意あるコードによるユーザーPCの乗っ取りを防ぐメカニズムを提供する。
WebAssemblyを利用するアプリケーションにはさまざまな種類がある。ゲームや音楽のストリーミング、動画編集、暗号化、画像認識などの機能を備えたアプリケーションだ。
研究チームのアプローチでは、新たに「RLBoxフレームワーク」を使用する。RLBoxフレームワークでは、Webブラウザの内部コンポーネントの一部(メディアファイルのデコードを行う)をWebAssemblyサンドボックスに移す。
Firefoxの保護はどのように進むのか、Windows版にも適用可能
今回の手法を試すために研究チームはまずLinux版Firefoxのテストリリースに適用した。まだ適用範囲は狭く、特定のフォントに使われるレンダリングライブラリを1つだけ保護する。
初期テストが成功すれば、研究チームはこのアプローチの適用対象を徐々に広げていく方針だ。いずれはFirefoxの主要なOS版のフルリリースバージョンに適用できる見込みだ。将来は、メディアファイルのレンダリングに使われる他のコンポーネントにも、今回のアプローチを適用する可能性があるという。
「初期テストがうまくいけば、Firefoxがサポートする全ての画像や動画、音声フォーマットに新アプローチを適用できる可能性がある。これらを扱う全てのライブラリの脆弱性が、Firefoxのハッキングに使われなくなることがわれわれの願いだ」(シャカム氏)
これが実現すれば、世界中のユーザーのセキュリティを向上できる可能性がある。Firefoxの月間アクティブユーザー数はPCに限っても約2億5000万人に及ぶ。
MozillaでFirefoxの最高技術責任者(CTO)を務めるエリック・レススコラ氏は今回の取り組みを次のように評価した。
「ソフトウェアの欠陥は必ず残る。ユーザーの安全を保つためには、プログラミング上の一つの誤りがWebブラウザ全体を容易には侵害しないようにする必要がある。この問題に対する業界のアプローチはこれまで少なく、効果は限定的だった。今回RLBoxが提供する新しいレベルのコード分離をユーザーに提供できることを非常にうれしく思う」
Firefoxの開発エンジニアであるネイサン・フロイド氏はこれまでの手法とWebAssemblyを用いた今回のアプローチがどのように異なるかを語った。
「Firefoxでは既にサンドボックスとRust言語の両方を幅広く利用しているが、それぞれに限界がある。プロセスレベルのサンドボックスは、既に存在する大規模なコンポーネントを保護する用途には適しているが、大量のシステムリソースを消費するという欠点がある。Rust言語は軽量だが、Firefoxのような数百万行に及ぶ既存のC++コードを書き換えるには、多大な労力を必要とする。そこで役立つのが、今回のWebAssemblyだ」
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ブラウザで実行可能な言語「WebAssembly」、Webの標準へ
W3Cは、プログラミング言語「WebAssembly」の標準化を完了し、そのコア仕様をW3C勧告として公開した。高パフォーマンスWebアプリケーションを実現する助けになる。 - オープンソースのJavaScript/WebAssemblyエンジン「V8 release v8.0」が公開
オープンソースのJavaScript/WebAssemblyエンジンの最新版「V8 release v8.0」が公開された。数週間後に正式リリース予定のWebブラウザ「Chrome 80」に搭載される。メモリ消費量が減ったために高速動作する他、プログラマーがバグを作り込みにくい仕組みを取り入れた。 - 「Rust」言語はCよりも遅いのか、研究者がベンチマーク結果を解説
ミュンヘン工科大学の研究チームのメンバーはRust言語で開発したネットワークデバイスドライバの処理速度をC言語のものと比較した。その結果、Rust版の速度低下は最大でも数%にとどまっていた。なぜ処理性能がわずかに遅くなるのか、その理由も説明した。