米グーグルは2017年1月3日、Androidデバイス向けの2017年1月版セキュリティパッチ情報を公開した。2017年1月版セキュリティパッチでは、リモートから任意のコードを実行される恐れのある脆弱性を含めて90以上の脆弱性が修正されている。修正された脆弱性のうち、影響範囲が特に広いものについて紹介する。

 米グーグルは2015年8月以降、Androidデバイス向けのセキュリティパッチとその内容についての情報を毎月提供している。2017年1月3日には、2017年1月版のセキュリティパッチ情報を公開した。2017年1月版のセキュリティパッチでは、リモートから任意のコードを実行される恐れのある脆弱性を含めて90以上の脆弱性を修正している。

 2016年7月版のセキュリティパッチから同社は、影響範囲が広く迅速な対応が求められる脆弱性を修正する早期版と、すべての脆弱性を修正する完全版の2つを提供している。こうすることで、端末メーカーなどが完全版のセキュリティパッチをすぐには提供できない場合に、早期版から段階的にセキュリティパッチを提供できるようになる。

 2017年1月版においても早期版と完全版の2種類が提供された。早期版は「2017年1月1日」、完全版は「2017年1月5日」というセキュリティパッチレベル(適用されている最新のセキュリティパッチを示す日付情報)で示されている。

 2017年1月版セキュリティパッチで修正される脆弱性のうち、致命的なものだとグーグルが評価する脆弱性を表1に挙げた。これらを米国の非営利団体であるMITREが提供する脆弱性情報データベース「CVE」(Common Vulnerabilities and Exposures」が割り当てるCVE-IDでカウントすると、致命的なものだけで29の脆弱性が修正されていることが分かる。

表1●2017年1月版のセキュリティパッチで修正されたAndroidの致命的な脆弱性
危険度が低い脆弱性を含めると、総計で90以上の脆弱性を修正している。
表1●2017年1月版のセキュリティパッチで修正されたAndroidの致命的な脆弱性
[画像のクリックで拡大表示]

メディアサーバーの問題を修正

 2017年1月版セキュリティパッチで修正される致命的な脆弱性のうち、影響範囲が比較的広いのがメディアサーバーに存在する脆弱性(CVE-2017-0381)である。

 この脆弱性はOpusという音声圧縮形式のデータを処理する箇所に存在し、これを悪用されると、細工されたOpus形式の音声データの再生によって、リモートから任意のコードを実行されたり、サービスを停止されたりする危険がある。

 同脆弱性は、より詳細に言うとOpus形式音声データ処理用の「libopus」というライブラリーに存在する。libopusライブラリーには、正規化した線スペクトル周波数(Normalized Line Spectral Frequency)の間の最小距離を計算する部分がある。この最小距離は負の値をとることはないが、実装が不十分だったため従来のコードでは負の値になるケースがあり、その場合にメモリー破壊が生じる恐れがあった。

 同脆弱性を修正するプログラムコードの差分を図1に挙げた。この修正コードでは、算出する最小距離が負の値にならないように関数形式マクロ(silk_ADD_SAT16())を追加している。

図1●メディアサーバーの脆弱性を修正するプログラムコードの差分
図1●メディアサーバーの脆弱性を修正するプログラムコードの差分
算出する正規化線スペクト ル周波数(Normalized Line Spectral Frequency)の間の最小距離が負の値にならないように関数 形式マクロ(silk_ADD_SAT16())を追加している。
[画像のクリックで拡大表示]

 同修正を施したAOSP(Android Open Source Project)版のAndroidバージョンは、5.0.2/5.1.1/6/0/6.0.1/7.0/7.1.1。libopusライブラリーはAndroid 5.0で追加されたもので、同ライブラリーを装備する全バージョンが影響を受けることが分かる。