11月初旬、GoogleのオープンソースChromiumプロジェクトに貢献している開発者が、ブラウザのBlinkレンダリングエンジンのガベージコレクターであるOilpanに問題があると報告した。この問題は、アドレス空間レイアウトランダム化(ASLR)と呼ばれるメモリ防御を破るのに利用される可能性がある。
約 2 週間後、Google のソフトウェア セキュリティ エンジニアである Chris Palmer 氏は、このバグを「修正不可」とマークしました。これは、Google が ASLR を救うことはできないという事実を受け入れたためです。Oilpan が悪用されるかどうかに関係なく、Spectre や Spectre のようなプロセッサ レベルの欠陥によっていずれにせよ ASLR を破ることができるからです。
あるいは、パーマー氏の言葉を借りれば、「私たちはすでに、ASLR を回避できる世界に向けて計画を立てなければなりません。」
水曜日、Chromium のバグ追跡ボットは、これまで非公開だった議論を公開し、一般に公開しました。
セキュリティ研究者は長年にわたり、ASLRの欠陥について警告してきました。この防御機構は、ソフトウェアの一部をコードのメモリアドレス空間のランダムに選択された領域に配置することで機能しますが、これらの位置はソフトウェアが起動されるたびに変化します。そのため、アプリケーションやオペレーティングシステムの脆弱性を悪用するマルウェアを作成する者にとって、攻撃者はコードを攻撃するために必要なコンポーネントがメモリ内のどこに配置されているかを把握できず、エクスプロイトが機能しなくなります。
しかし、前述の通り、ASLRは完全な防御力を備えているわけではありません。攻撃者が被害者のシステムに侵入する前に乗り越えなければならない障壁を増大させるだけです。アムステルダム自由大学の研究者は2017年の論文で、「ASLRはJavaScriptなどのサンドボックス環境において根本的な欠陥を抱えており、将来の防御策はランダム化された仮想アドレスを構成要素として頼るべきではない」と述べています。
その感情は現在、WontFix バグとして Chrome に反映されています。
GPGなどで使用されているLibgcryptの深刻なバグが大きな問題を引き起こし、パッチの緊急配布を促している
続きを読む
ソフトウェアにおけるガベージコレクションとは、自動メモリ管理、つまりメモリ内で使用されなくなったデータを特定し、そのメモリを他の用途に再利用できるようにするプロセスを指します。ガベージコレクターであるOilpanは、メモリをスキャンしてメモリ内の他のデータへの参照を探すことでこのタスクを実行します。他のデータから参照されなくなったデータは、ガベージコレクションの対象となります。しかし、メモリは基本的に膨大な数値の配列であるため、Oilpanはメモリ内の値がデータへの参照なのか、それとも株価やピクセルの色のような単なる値なのかを判断する必要があります。
Oilpan は、ポインタと整数を区別するためにある程度の努力をするが、2 種類のデータを区別するためにタグを使用するなど、比較的高いリソース コストが発生する手法に依存しない、保守的なガベージ コレクションと呼ばれるアプローチに依存しています。
バグを報告した人が指摘したように、このアプローチはメモリ内のオブジェクトの位置を見つける方法への扉を開きますが、これは ASLR が防止するように設計されているものです。
「[Oilpan]は整数とポインタを区別できないため、整数が割り当てられたオブジェクトを指している場合、有効なポインタであると想定し、オブジェクトを使用中としてマークします」とバグ報告者は説明しています。「この特性を利用することで、特定のアドレスにオブジェクトが配置されているかどうかを確認できます。」
これを実現する手法は、まずオブジェクト(メモリ上の不明な場所に配置されます)を割り当て、次にスタックと呼ばれるメモリ領域にクエリ対象のアドレスを設定し、そのオブジェクトへのすべての参照を削除し、ガベージコレクションを起動するというものです。対象オブジェクトが生き残った場合、クエリ対象のアドレスはそのオブジェクトを指します。
これによりメモリレイアウトが明らかになり、悪用が容易になります。
バグ報告者は、WebAssemblyコードを組み込んだJavaScriptの概念実証エクスプロイトを作成し、スタックをポインタで埋めて対象オブジェクトの解放を試みました。Fuzzing.ioの主任セキュリティ研究者であるリチャード・ジョンソン氏によると、この手法を緩和するには、ガベージコレクションを強制するAPIの使用が必要です。
ほぼゲームオーバー
匿名を条件に取材に応じた業界のセキュリティ専門家は、The Registerに対し、ASLR(Accountable Real Time Line)は以前から簡単に回避できており、エクスプロイトを作成した人なら誰でもそのことを理解していると語った。「研究者がガベージコレクションとWASMサンドボックスを悪用してASLRを回避したのがすごいところです」と、この情報セキュリティ専門家は述べた。「つまり、セキュリティ機能を悪用して別のセキュリティ機能を回避しているのです」
WebKitのRiptideガベージコレクターを利用するAppleのSafariも保守的なアプローチを採用しており、影響を受けると言われています。一方、Firefoxは影響を受けていないようです。
「ブラウザはCPUの問題を完全に解決することはできません。影響を軽減することしかできません」と、Microsoft Edgeの脆弱性調査リーダーであるジョナサン・ノーマン氏はツイートした。「私たちにできることには限界があります。Intel/AMDが未解決の問題が数多く残っています。」
これらの問題は、現代のチップアーキテクチャにおける投機的実行の設計上の欠陥に起因しており、その多くは完全には軽減されていません。2018年にデータ漏洩を引き起こすSpectreファミリーの関連バグが明らかになった後、Googleのブラウザセキュリティガイダンスは、前提を見直す必要があることをほぼ認めました。
「アクティブなウェブコンテンツ(JavaScript、WebAssembly、Native Client、Flash、PDFiumなど)は、それをホストするプロセスのアドレス空間にあるあらゆるデータを読み取ることができると想定する必要があります」と、業界は状況を要約して述べています。
複数の独立した団体が、Spectre型攻撃の有効性と信頼性を示す概念実証エクスプロイトを開発しました。したがって、単一プロセス内でのクロスオリジンの機密性の喪失は、単なる理論上の話ではありません。
偶然にも、WontFix バグは WontPay バグでもあることが判明しました。Google の脆弱性報奨プログラムがこれを審査した結果、報奨金を提供しないことが決定されました。®