セキュリティに対する Pixel の積極的アプローチ: セルラーモデムの脆弱性に対処する
Pixel スマートフォンは、セキュリティに配慮しているという当然の評価を得ています。このブログでは、Pixel がセルラー ベースバンドでよく見られるセキュリティ侵害をどのように緩和しているかについて、その内側を詳しく見ていきます。
スマートフォンは私たちの生活に欠かせないものとなっていますが、それを支える複雑なソフトウェアを意識する人はほとんどいません。中でも特に意識されないのが、セルラー ベースバンドでしょう。これは、デバイスのすべての携帯データ通信(LTE、4G、5G など)を処理するプロセッサです。ほとんどのスマートフォンでは、厳しいパフォーマンス制約のあるセルラー ベースバンド プロセッサが使われているため、セキュリティの強化は困難です。この攻撃ベクトルを重視するセキュリティ研究者は増えており、人気のスマートフォンで使われているベースバンドが悪用される可能性もよく実証されています。
朗報と言えるのは、Pixel は長年にわたってベースバンドにセキュリティ強化策を導入してきたことです。Pixel 9 には、これまで出荷されてきた中で最も強力なベースバンドが搭載されています。以下では、なぜこれが重要なのか、具体的にどのようにセキュリティが向上したのか、そしてこれがユーザーにとってどのような意味を持つのかについて詳しく説明します。
どのソフトウェアにも言えることですが、セルラー ベースバンドのファームウェアも、バグやエラーの影響を受けやすいものです。ベースバンドはデバイスの攻撃面に広く接しているので、そういったソフトウェアの脆弱性は重大な懸念となります。モデム ベースバンドのソフトウェア バグを悪用してリモートコードを実行する実証例はたくさんあり、このような脆弱性が重大なリスクとなっているのは明らかです。
セキュリティ研究者による最近の報告によると、ソフトウェア開発のベスト プラクティスと考えられている、他の場所によく導入されているエクスプロイト対策は、ほとんどのベースバンドに導入されていません。たとえば、ほとんどの一般的なスマートフォンのセルラー ファームウェアには、Android オペレーティング システムで一般的になっているソフトウェア強化手法が使われていません。
エクスプロイト業者やサイバースパイ企業は、こういった脆弱性を悪用し、同意なしに個人のプライバシーを侵害しています。それを示す明確な兆候もあります。たとえば、セルラー ベースバンドのゼロデイ エクスプロイトは、スマートフォンに Predator マルウェアを導入するために使われています。さらに、エクスプロイトのマーケットプレイスには、ベースバンド エクスプロイトが明確に記載されています。この報酬はかなり低いことが多いので、このような脆弱性は大量に存在している可能性があります。攻撃者がこういった脆弱性を使うと、デバイスに不正アクセスしたり、任意のコードを実行したり、権限を昇格させたり、機密情報を抽出したりできます。
Android と Pixel は、こういった業界の動向を認識しています。近年では、脆弱性報酬プログラムを積極的に更新し、接続ファームウェアの悪用可能なバグを特定して対処することをますます重視しています。
- 境界サニタイザー: 攻撃者がスペースに許容量以上のデータを詰め込もうとした場合、コードにバグがあると、データがあふれて他のデータが破損したり、悪意のあるコードが実行されたりします。これがバッファ オーバーフローです。境界サニタイザーは、特定の方法でメモリにアクセスする箇所にチェックを自動追加し、コードが指定された領域以外のメモリにアクセスしないようにすることで、メモリの破損を防ぎます。
- 整数オーバーフロー サニタイザー: 数値は重要です。大きすぎると「オーバーフロー」が発生し、小さい値として誤解釈される可能性があります。逆も発生することがあります。数値が負の方向にオーバーフローすると、大きな値として誤解釈される可能性があります。攻撃者がこういったオーバーフローを悪用すると、予期しない動作が引き起こされる可能性があります。整数オーバーフロー サニタイザーは、そのような演算が行われている箇所にチェックを追加し、この種の脆弱性によるメモリ破損のリスクを排除します。
- スタック カナリア: スタック カナリアは、コードが確実に想定される順序で実行されるように、あらかじめ仕掛けを施しておく仕組みです。ハッカーがスタックの脆弱性を悪用し、カナリアに気付かずに実行フローを変更しようとすると、カナリアが「作動」するため、システムは攻撃された可能性があることを検知できます。
- 制御フローの整合性(CFI): CFI もスタック カナリアと同じように、コードが限定されたパスのみに従って実行されることを保証します。攻撃者が許可された実行パスから逸脱させようとしても、CFI によってモデムが再起動されるので、許可されていない実行パスに入ることはありません。
- スタック変数の自動初期化: C/C++ では、デベロッパーがメモリを使う宣言を行っても、通常は初期化されません。割り当てられた領域を正しく設定するのは、デベロッパーの役割であると想定されているからです。これが正しく処理されないと、値が初期化されないことによって機密データが漏洩したり、攻撃者に操作されてコードが実行されたりする可能性があります。Pixel スマートフォンでは、スタック変数が自動的にゼロに初期化されるので、スタックデータの脆弱性を防ぐことができます。
Pixel の積極的なセキュリティ アプローチは、ソフトウェア スタック全体にわたってユーザーを保護するという取り組みを体現したものです。リモート攻撃に対するセルラー ベースバンドの防御力強化は、時代の先を行く Pixel のセキュリティ対策の一例に過ぎません。
セルラー ベースバンドの防御力強化作業に参加してくれた同僚に感謝します。Dominik Maier、Shawn Yang、Sami Tolvanen、Pirama Arumuga Nainar、Stephen Hines、Kevin Deus、Xuan Xing、Eugene Rodionov、Stephan Somogyi、Wes Johnson、Suraj Harjani、Morgan Shen、Valery Wu、Clint Chen、Cheng-Yi He、Estefany Torres、Hungyen Weng、Jerry Hung、Sherif Hanna