前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Android:デバイス情報のビルド番号に test-keys がついていた話

内容

先日サポートしているアプリにお問い合わせがあり、内容とは別にそのユーザーの端末のビルド番号が 機種ID.バージョン test-keys となっていた。機種名は一応伏せるがGoogleのPixel端末などではなくいわゆる中華端末である。

気になった点

署名

ビルド番号にtest-keysがつくのはAOSPなどで独自にOSビルドをし、署名をしていない状態のアプリケーションのことである。

リリース用のビルドへの署名

Android ツリーは build/target/product/security にテストキーを含みます。make を使用して Android OS イメージをビルドすると、テストキーを使用してすべての .apk ファイルに署名します。テストキーは一般に知られているため、だれでも .apk ファイルに同じキーで署名できることになり、そのままでは OS イメージに組み込まれているシステムアプリの置き換えやハイジャックにつながる可能性があります。そのため公開またはデプロイする Android OS イメージには、自分だけがアクセスできる特別なリリースキーのセットを使用して署名する必要があります。

Android のアンチリバース防御

カスタム Android ビルドの確認 デバイスがルート化されているかどうかを確認するだけでなく、テストビルドやカスタム ROM の兆候を確認することも役に立ちます。これを行う方法のひとつは、BUILD タグに test-keys が含まれているかどうかを確認することです。これは一般的にカスタム Android イメージを示します。Google Over-The-Air (OTA) 証明書の欠落はカスタム ROM のもうひとつの兆候です。出荷版の Android ビルドでは、OTA アップデートに Google の公開証明書を使用します。

なのでこの端末は署名がなされおらず、一見通常の中華端末としてビルドされているようである。

どの時点でこうなった?

自分でRoot化したりOS入れ直したりしている人なら(悪事に使ってない限り)特に問題はない。
ただしこれが中古で安く購入した端末だったりした場合には意味が変わってくる。キーロガーが仕掛けられていたり、 パスワードや位置情報などが不正に情報が送信されているような恐れも出てくる。
(ただ本当に悪意のあるハッカーなら一眼でわかるような情報は残さない気もするが)

Googleのセキュリティは機能するのか?課金は?

Playプロテクトはインストールされたアプリに対するチェックだから無効な気がする。 この状態でPlay Storeアプリを使うことや課金は出来るのだろうか?

感想

自分の端末でもないし、現時点でこれ以上調べられることはないが、 お問い合わせをしてくれたユーザーはtest-keysが付いていることに気づいていないかもしれないので不安がある。

仕事上テスト端末として結構な数の中古端末を買っていたので一応全部のビルド番号を再確認した(問題なし)。 今後は購入時に店頭の起動チェックで必ずビルド番号の欄を見るように気をつけよう。

ちなみに自分はAndroidのサイトから開発版のAndroid12をPixel 4にインストールして使っていたが、こちらには署名済みらしくtest-keysはついていなかった。

参考

coky-t.gitbook.io

source.android.com