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のレンダラプロセスからエスケープすることに成功した。
Copyright © ITmedia, Inc. All Rights Reserved.