以下の内容はhttps://cysec148.hatenablog.com/entry/2025/08/11/222238より取得しました。


第38回:インジェクション攻撃とは?

Hello there, ('ω')ノ

💡 インジェクション攻撃とは?

インジェクション(injection)とは、アプリがユーザーからの入力をそのまま信じて処理することで、 攻撃者に本来意図していない命令やコードを注入(injection)されてしまう現象です。

たとえば、SQL文やコマンド、HTML、JavaScriptなどの入力文字列に“悪意ある操作”を混ぜ込むことで、アプリの挙動を乗っ取ったり、データを盗んだりすることができます。


💥 代表的なインジェクションの種類(Android関連)

種類 説明 対象
SQLインジェクション 入力された文字列がSQLクエリの一部として扱われ、意図しないデータベース操作が行われる SQLiteなど
コマンドインジェクション OSのコマンドに文字列がそのまま使われ、任意の命令を実行される Runtime.getRuntime().exec() など
JavaScriptインジェクション(XSS) WebView内でJavaScriptコードが実行されてしまう WebView、HTML表示機能
Intentインジェクション インテントに不正なデータを入れてアプリを誤作動させる Activity、Broadcast、Service

🔍 例:SQLインジェクションの具体例

たとえば以下のようなコードがあるとします:

String query = "SELECT * FROM users WHERE name = '" + inputName + "'";

ここで、inputName に次のような文字列が入力されると…

' OR '1'='1

最終的なSQLはこうなります:

SELECT * FROM users WHERE name = '' OR '1'='1'

→ これですべてのユーザー情報が抽出されてしまう可能性があります。


🧪 Androidアプリでの診断ポイント

✅ 1. ソースコードまたはMobSFでSQL/コマンドの組み立てを確認

db.rawQuery("SELECT * FROM users WHERE id = " + userInput, null);

このように文字列結合でSQLを構築している場合、インジェクションのリスクが極めて高いです。

MobSFでは「SQL Injection」や「Command Injection」の可能性がある箇所を検出できます。


✅ 2. WebViewで不正なJavaScript実行が可能か?

webView.loadData(userInput, "text/html", "UTF-8");

このコードで、userInput<script>alert(1)</script> を入れると、JavaScriptが実行されてしまう=XSSの発生です。


✅ 3. インテントで異常なデータ注入ができるか?

adb shell am start -a android.intent.action.VIEW -d "malicious://data"

→ 受け取る側がgetData()を検証せず処理すると、想定外の動作を引き起こすことも


🔐 なぜインジェクションが起きるのか?

主な原因は、**「信頼できない入力を検証せずそのまま使ってしまうこと」**です。

原因 結果
入力値のバリデーション不足 特殊な構文が混ざっても通ってしまう
プレースホルダー未使用 SQLやコマンドが直接構築される
WebViewの設定ミス スクリプト実行を許してしまう
入力の想定範囲が甘い 異常なフォーマットでも処理してしまう

🛡️ 対策まとめ

対策 内容
プレースホルダー使用 ? を使った SQL構文で PreparedStatement を活用
入力値の検証・サニタイズ 数値・文字列の形式を厳格にチェック、HTMLタグの除去
WebViewのスクリプト無効化 webSettings.setJavaScriptEnabled(false)
コマンドの分離 exec を使うなら引数は配列で明示
エラーメッセージを最小化 攻撃者へのヒントを減らす

✅ まとめ

  • インジェクション攻撃とは、信頼できない入力がアプリ内部に“注入”されて悪さをする攻撃
  • Androidアプリでは特に、SQL・コマンド・WebView・Intentの4つに注意
  • 診断では、コード中の文字列結合処理、Web表示、インテント受信処理などを重点的にチェック
  • 対策のキーワードは「バリデーション」「サニタイズ」「分離」「最小化」!

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/08/11/222238より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14