Androidアプリ開発のためのセキュリティ入門はじめました
皆さん、ごきげんよう。貴島(@jnkykn)です。「【札幌現地+オンライン開催】力強くブログを108記事アウトプットする日の 20251227」にオフライン参加したあと、2025/12/31まで参戦中です。2025/12/31 16:51現在、81記事が公開済です。108本達成まで、あと27本の記事が必要なので、少しでも貢献したい気持ち。この記事が公開されれば、目標まであと26本です。
Androidアプリ開発のためのセキュリティ入門中
サイボウズのPSIRT小西さんが執筆された、「Androidアプリ開発のためのセキュリティ入門 体験して学ぶ16の脆弱性とその対策」は、2025/11/6に発売されました。自費で予約購入して、11/20頃から読み始めました。やっと今日環境構築まで進んだので、躓いたところなどを書きます。
小西さんにサインもいただけたので満足です✨(サインをいただきたかったので、会社の費用は使わず個人で購入しました)

現在の進捗状況
第1章モバイルアプリケーションとセキュリティ~第2章ハンズオン環境のインストールとセットアップまで読了し、ハンズオン用のデータをダウンロード、実際にハンズオン環境も構築しました。
第3章から、章ごとに脆弱性の解説とハンズオンが始まるので、その準備ができたところです。
学習メモ:第1章 モバイルアプリケーションとセキュリティ
第1章で、Androidアプリを狙う脅威と、OSセキュリティ、モバイルアプリのセキュリティレベルの解説がありました。私は前職でちょっとだけAndroidアプリ開発の経験があるのですが、当時勤務先の検証用端末のOSは、Android 2.0/2.1だったと記憶しています。開発環境も、Eclipseを使っていました。そう、Android Studio誕生前の話です。個人持ちのスマホは、Androidを愛用しているのですが、最近はすっかり一般ユーザーとして利用するだけの状態です。今回、第1章で、どんな脅威があるか?OSは、どのように対策されているか?を知ることができました。ルート化の知識はあったものの、TEE(Trusted Execution Environment)の知識が無かったので、これだけでも買ってよかったと思いました。
学習メモ:第2章 ハンズオン環境のインストールとセットアップ
躓き1:
メモやスクリーンショットを撮りながら、セットアップを進めていたのですが、Android Studioインストールの途中で、adbコマンド設定のPrivateにチェックOnできないまま、ダイアログが閉じられてしまいました。どこかで設定変更できないか調べてみてもわからず、完全アンインストール後に、再インストールしても同じダイアログは表示されませんでした。ハンズオンの実行に影響が無いと良いのですが、心配です。
躓き2:
躓きというほどのことではないのですが、エミュレーターが、起動できない!?と思ったら、デスクトップ画面上端のギリギリに表示されていました。ドラッグして見える位置に移動させて、Hello Worldが表示されるのを確認しました。
躓き3:
root@jnkyknX1:/mnt/c# docker pull drozerdocker/drozer
The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.
For details about using Docker Desktop with WSL 2, visit:
https://docs.docker.com/go/wsl2/
root@jnkyknX1:/mnt/c#Docker Desktopをインストールしたはずなのに、実行できなかった。Docker Desktopの設定を確認して、再チャレンジ。
Use the WSL 2 based engineがOnになっているのを確認。

躓き4:
最初、drozerdocker/drozerのpullができなかった。Docker Desktopを実行していなかったのがいけなかったのかな?と思い、Docker Desktopを起動して、pullできた(わかってない💦)
root@jnkyknX1:/mnt/c# adb root
Command 'adb' not found, but can be installed with:
apt install adb
root@jnkyknX1:/mnt/c# adb.exe root
restarting adbd as root
root@jnkyknX1:/mnt/c# adb.exe forward tcp:31415 tcp:31415
31415
root@jnkyknX1:/mnt/c# docker run -it --add-host host.docker.internal:host-gateway drozerdocker/drozer console connect --server host.docker.internal
Selecting 1b536ce9223cf935 (Google sdk_gphone64_x86_64 16)
.. ..:.
..o.. .r..
..a.. . ....... . ..nd
ro..idsnemesisand..pr
.otectorandroidsneme.
.,sisandprotectorandroids+.
..nemesisandprotectorandroidsn:.
.emesisandprotectorandroidsnemes..
..isandp,..,rotecyayandro,..,idsnem.
.isisandp..rotectorandroid..snemisis.
,andprotectorandroidsnemisisandprotec.
.torandroidsnemesisandprotectorandroid.
.snemisisandprotectorandroidsnemesisan:
.dprotectorandroidsnemesisandprotector.
drozer Console (v3.1.0)
dz>躓き5:
Firebaseのセットアップで、firebase initの最初のオプション選択で迷いました。(インストール手順には、"「Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys」.を選択し"と書かれているんですが、選択肢の中にありませんでした)
( ) Extensions: Set up an empty Extensions manifest
( ) Realtime Database: Configure a security rules file for Realtime Database and (optionally) provision default
instance
( ) AI Logic: Set up Firebase AI Logic with app provisioning
( ) Data Connect: Set up a Firebase Data Connect service
( ) Firestore: Configure security rules and indexes files for Firestore
( ) Genkit: Setup a new Genkit project with Firebase
( ) Functions: Configure a Cloud Functions directory and its files
( ) App Hosting: Set up deployments for full-stack web apps (supports server-side rendering)
( ) Hosting: Set up deployments for static web apps
( ) Storage: Configure a security rules file for Cloud Storage
( ) Emulators: Set up local emulators for Firebase products
( ) Remote Config: Configure a template file for Remote Config
書籍にあるインストール手順が意図しているのは、"Hosting"であると判断して、「Hosting: Set up deployments for static web apps」を選択して進めました。(合っていたっぽい!)
√ Are you ready to proceed? Yes
√ Which Firebase features do you want to set up for this directory? Press Space to select features, then Enter to
confirm your choices. Hosting: Set up deployments for static web apps
=== Project Setup
First, let's associate this project directory with a Firebase project.
You can create multiple project aliases by running firebase use --add,
i Using project mobile-app-da550 (Mobile-App) .
=== Hosting Setup
Your public directory is the folder (relative to your project directory) that
will contain Hosting assets to be uploaded with firebase deploy. If you
have a build process for your assets, use your build's output directory.
√ What do you want to use as your public directory? public
√ Configure as a single-page app (rewrite all urls to /index.html)? No
√ Set up automatic builds and deploys with GitHub? No
+ Wrote public/404.html
+ Wrote public/index.html
+ Wrote configuration info to firebase.json
+ Wrote project information to .firebaserc
+ Wrote .gitignore
+ Firebase initialization complete!環境構築できた!
Firebase Hostingサーバーが起動できました。

確認後、Hostingサーバを停止して、環境構築は終わりました。
C:\AndroidMobile-Sample-App\chapter07\FirebaseServer>firebase hosting:disable
√ Are you sure you want to disable Firebase Hosting for the site mobile-app-da550
This will immediately make your site inaccessible! Yes
+ Hosting has been disabled for mobile-app-da550. Deploy a new version to re-enable.この先の目標など
まだ環境構築ができたばかりなので、これからハンズオンにもチャレンジしながら、Androidアプリの脆弱性とその対策について学習を進めていきたいと思います。野望としては、Androidアプリ開発のセキュリティ対策を理解した上で、何か個人開発がしてみたいな~と思っています。来年は、何か自分用のアプリを1つ作って、自分のスマホで実行するのを目標にしたいと思います。
さて、いい感じに今年最後のブログがまとまった気がします。手を動かすことを忘れず、広げるというよりは深める方向で進めていくことを来年の方針にします。
それでは、そろそろ年越し蕎麦の仕込みを始めようと思います。皆さんごきげんよう。良いお年を。次の記事またはイベントで、お目にかかりましょう。なお、私の2026年は、RSGT 2026のブース設営(2026/01/06)からスタートです💪
更新履歴
書籍タイトルとブログタイトルの誤り修正、Androidアプリ開発のためのセキュリティ入門 体験して学ぶ16の脆弱性とその対策の書籍リンクを追加しました。小西さんのご著書のタイトルを誤って記載してしまい、申し訳ございません🙇(2025/12/31 17:14)
