GitHubは複数の脆弱性攻撃を組み合わせることで、カーネルコードの実行に至る実験に成功したことを発表した。Androidシステムコンポーネントのさまざまな脆弱性攻撃を組み合わせて、「Google Chrome」ブラウザのエクスプロイトから権限昇格へ、さらにAndroidデバイス上でのカーネルコード実行へと進んだ。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
GitHubは2021年3月24日(米国時間)、GitHub Security Labが、Androidシステムコンポーネントのさまざまな脆弱(ぜいじゃく)性に対する攻撃を組み合わせて、「Google Chrome」ブラウザのエクスプロイト(脆弱性攻撃)から、権限昇格、Androidデバイス上でのカーネルコード実行に至る実験に成功したことを紹介した。
GitHub Security Labの目的は、現在のセキュリティ対策が最新のノウハウを用いた攻撃にどの程度耐えるのかを測定することにあった。「概念実証」(PoC)を越える今回のような取り組みは、セキュリティ研究のコミュニティーがシステムのセキュリティ対策の弱点を特定し、修正して対策を改善するプロセスに貢献するとしている。
今回の実験のように、複数の脆弱性を組み合わせて一連の攻撃を重ね、最終的に標的のシステムへの特権アクセスを取得することを、攻撃者が使う用語では「フルエクスプロイトチェーンの構築」と呼ぶ。
GitHub Security Labは実際の攻撃者が試みるように、まず、Androidカーネルのエクスプロイトを目標に定め、その実現方法を見いだした。
さらに、何をすればよいのか、どのようにすればよいのかを詰めていった。こうしてChromeサンドボックスのエスケープとChromeレンダラのエクスプロイトを狙うことを決めた。目標達成に向けて、モダンWebブラウザのエクスプロイトチェーンをさかのぼり、悪意あるWebページへのユーザーのアクセスを出発点に設定した。
今回の攻撃チェーンの重要部分で使用されたChrome β版の脆弱性は、GitHub Security Labが脆弱性を報告する前には(2020年を通じて)、実際に悪用されたことがなかった。攻撃チェーンで使用された脆弱性はその後、全て修正されており、GitHub Security Labは、修正後、エンドユーザーがデバイスを更新するのに十分な時間が経過していると述べている。
GitHub Security LabはAndroidカーネルのエクスプロイトとChromeサンドボックスのエスケープ、Chromeレンダラのエクスプロイトを、次に紹介する3段階で進めていった。
GitHub Security Labは「GHSL-2020-375」として報告されている脆弱性(CVE-2020-11239)を使用して、ポピュラーなQualcommチップセットを採用したAndroidデバイス上で権限昇格に成功した。Qualcommチップセットを採用したデバイスには「Google Pixel 4」「Samsung A71」「Samsung S20」などがある。
この脆弱性は、いわゆる「UAF」(Use After Free:解放済みメモリの使用)に関わる脆弱性だ。UAFの脆弱性はメモリ管理の欠陥の一種であり、攻撃者がこれを悪用するとシステムメモリ上のオブジェクトの内容を操作し、こうしたオブジェクトとやりとりするシステムソフトウェアに、操作したメモリ内容を渡すことができる場合がある。
GitHub Security Labが選んだ脆弱性は、攻撃者が自分のシステムアクセス権限を、侵害対象のChromeブラウザのようなAndroidアプリケーションのコンテキストから、システムへの特権アクセスができるように昇格させるために必要な、全ての機能を提供できた。
続いて攻撃チェーンをさかのぼり、「GHSL-2020-165」として報告されているChrome β版の脆弱性(CVE-2020-16045)を使用して、サンドボックス化されたChromeのレンダラプロセスからエスケープすることに成功した。
この脆弱性はChromeの決済処理コードで見つかったメモリ管理の欠陥だ。このエスケープにより、(1)で紹介したQualcommドライバの脆弱性を使用するために必要なアプリケーション特権を取得できた。
次に「GHSL-2020-167」として報告されているChromeの脆弱性(CVE-2020-15972)を使用して、サンドボックス化されたChromeのレンダラのコンテキストで、任意のコード実行に成功した。この脆弱性は、ChromeのWeb Audio処理コードに存在していたもので、これもUAFの欠陥に関連していた。
以上の3つのコンポーネントを組み合わせて攻撃チェーンが構築され、これらの脆弱性の影響を受けるAndroidユーザーが悪意あるWebサイトを訪れ、被害に遭うシナリオが完成した。
実際の攻撃では、悪意あるWebサイトへの訪問から始まり、(3)(2)(1)の順番で進むことになる。
GitHub Security Labは今回利用した攻撃コンポーネントそれぞれについて、詳細な解説を公開している。この攻撃チェーン全体は、GitHub Security Labの1人の研究員が、公開されている資料を基に考案したという。
GitHub Security Labの取り組みは、現在のシステムのセキュリティ対策にはどこが足りないかを具体例で示し、どうすれば改善できるかという実践的アドバイスを提供しているとGitHubは述べている。
Copyright © ITmedia, Inc. All Rights Reserved.