レポートの内容
エグゼクティブサマリー
総合リスク、テストした正確なビルド、深刻度ごとの発見事項の件数を冒頭にまとめています。
検出事項一覧
各発見事項のリスク、ステータス、簡単な説明。
コードレベルの検出事項
各検出事項について、根本原因、脆弱なコード、悪用の証拠を示しています。
検証と修正
2 回目の確認で各検出事項を検証し、推奨される修正方法とその確認方法を示しています。
解説付きの検出事項
1つの検出事項をステップごとに
レポートが1つの検出事項を、テストした正確なビルドから修正まで、どのように扱うかを示します。各ステップに、完全版レポートの該当ページを記載しています。
- ビルド
AndroGoat 1.0 (1)、パッケージ owasp.sat.agoat
レポートは、パッケージ名、バージョン、SHA-1ハッシュでテストしたAPKを特定し、そのサイズとスキャン日も記載しています。
レポート 2 ページ - 結果
リスク順に並んだ 44 件の発見事項
確認済みの脆弱性 34 件(高 12 件、中 16 件、低 6 件、重大 0 件)に加え、追加調査が必要な潜在的な問題 8 件と、2 件のハードニング対策。
レポート 3 ページ - 検出事項一覧
一覧化して追跡
検出事項一覧には、各問題のリスク、ステータス、簡単な説明が載っています。この問題は高で、未対応のままです。
レポート 4 ページ - フロー
アプリの安全でないストレージ画面
AndroGoatのストレージ画面は、入力されたユーザー名とパスワードを保存します。エージェントは、それぞれの画面がどこに書き込むかを追跡しました:SharedPreferences、SQLiteデータベース、一時ファイル、SDカード。
レポート 16 ページ - 検出事項
高:認証情報の平文保存
ユーザー名とパスワードが、SharedPreferences、SQLiteデータベース、一時ファイルに平文で書き込まれ、その1つは共有ストレージ上にあります。バックアップも有効になっています。
レポート 16 ページ - エビデンス
パスワードの行き先
逆コンパイルしたアプリは、パスワードをusers.xmlとaGoatデータベースに書き込み、SQLクエリのログにも出力します。adbバックアップで両方のファイルを取り出せます。レポートは、実行時にテストできなかった2つの保存経路も明記しています。
レポート 18 ページ - 修正
暗号化し、認証情報を共有ストレージに置かない
すぐにバックアップを無効にし、保存データを暗号化します。恒久的な修正では、認証情報をKeyStoreを利用するEncryptedSharedPreferencesに移行します。コード例付きです。
レポート 18 ページ - 検証
修正を確認する方法
逆コンパイルしたアプリで、ストレージ呼び出しに平文の認証情報が渡されていないか検索し、adbバックアップで読み取り可能な認証情報ファイルが出てこないことを確認します。
レポート 19 ページ
エージェントの判断
リスクと判断した理由
スキャナーはルールに一致したものをすべて報告します。エージェントは報告する前に、手がかりが実際の被害につながるかを確かめます。AndroGoat アプリで見つかった手がかりについて、エージェントがどう判断したかを示します。
ステップ 1
このアドレスはアプリの中で何をしているのか?
アプリのリソース res/values/strings.xml に、Firebase データベースのアドレス androgoat-42597.firebaseio.com が含まれていました。
レポート 68 ページステップ 2
アプリは実際にそれを使っているのか?
いいえ。Firebase ライブラリはなく、この値を読み込むコードもありません。ルールベースのチェックなら、使われていない残骸として片付けて先に進むところです。
レポート 70 ページステップ 3
データベース自体は公開されているのか?
エージェントはログインせずにデータベースへリクエストを 1 回送りました。200 OK が返り、ユーザー名とパスワードが含まれていました。
レポート 70 ページステップ 4
では、リスクなのか?
はい、高(High)です。アプリがアドレスを使っていなくても関係ありません。アプリを展開すれば誰でもデータベースを見つけ、アカウントなしで読み取れます。
レポート 30 ページステップ 5
どう修正するか?
Firebase Authentication とセキュリティルールを有効にして、データベースの読み取りにログイン済みユーザーを必須にし、使われていないアドレスをアプリから削除します。
レポート 31 ページ



