公開日: 2026/03/15
Keenaduと呼ばれるマルウェアが、一部のAndoridタブレットに混入していたことがKasperskyの調査で明らかになりました。
格安タブレットで知られるAlldcube社のタブレットもマルウェア感染していることで発表され、話題となりました。

Alldcube製タブレットのKeenadu感染の報告
このKeenaduの攻撃手法が興味深かったので、調べた内容をわかりやすくまとめました。
Keenaduは、Android端末のファームウェアに仕込まれたバックドア型マルウェアです。
デバイス出荷時のファームウェアのビルド段階で混入し、任意のアプリを起動すると各プロセスへ入り込み不正なコードを実行するという特徴があります。
アプリ起動時に、強い権限を入手してアプリインストールや検索キーワードの入手、個人情報の入手も技術的には可能であり、深刻な情報漏えいリスクをもたらす危険なマルウェアです。
Kasperskyの以下の図がわかりやすいです。
この図を見ながら後述の説明を読んでもらえればと思います。

Keenaduの攻撃手法の図解
Androidでアプリを起動するときは、Zygoteとよばれるプロセスをforkして作られます。
Zygoteはアプリに必要なAndroidライブラリ等を事前に読み込んでおり、アプリの起動を効率化するためのプロセスです。
このZygoteはlibandroid_runtime.soと呼ばれるライブラリも含んでいます。
1libandroid_runtime.so はAndroidの標準クラス(android.view等)と、OSの深い層やHALの橋渡しをしている共有ライブラリです(感染していないAndroidソースコードにも存在する)。
libandroid_runtime.soはAndroidのログ出力(android.util.Log)の橋渡しもしていて、低いレイヤーにあるAndroidのログ管理システムに書きこむことをしています。
このlibandroid_runtime.soのログ出力用のメソッドprintln_nativeにマルウェアが埋め込まれていました。
要するに、Zygoteと呼ばれるアプリ起動時に必ずforkされるプロセスの中にマルウェアが埋め込まれていて、ログを1回でも出力するとマルウェアに感染するようになっていました。
println_nativeに仕込まれたマルウェアは、まず自分がsystem_server[1]上で動いているかを確認します。
system_serverプロセスであればAKServer、通常のアプリプロセスならAKClientを起動します。
AKServerはsystem_serverに常駐する司令塔で、各アプリ側のAKClientとBinderでプロセス間通信をします。
AKClientは、各アプリプロセス内で悪意のあるコードを実行する追加のDEX[2]を読み込むための足場として動きます。
つまり、攻撃者はAKServerでDEXファイルで悪意のあるコードを配信し、アプリ内のAKClientがそれを受信することで、任意の悪意あるコードをアプリ内で実行できる状態になっていました。
前述の通り、技術的にはアプリで実行できることはほとんどできてしまうため、認証情報窃取や個人情報の窃取など深刻な被害ももたらすことも可能になっています。
ただKasperskyの報告によると、現時点で主に広告不正と不正インストールの収益化に使われていたとみられています。
確認された、あるいはコードから判断された被害内容の一例は以下の通りです。
疑問に思うのは「どこからマルウェアが混入したんだ?」という点だと思います。
具体的な経路は報告されていませんが、Androidのファームウェアのビルド段階での混入が主な経路とされています。
ファームウェアをビルドするコンピュータがウイルス感染をしており、そこから不正なコードを埋め込んだlibandroid_runtime.soに置き換えて、ビルドされて、市場に出回ってしまったとされています。(典型的なサプライチェーン攻撃)
サプライチェーンで入れられたら何もできんなぁと思った。OTAアップデートを祈りながら待つしかない。
格安タブレットはこういうサプライチェーンが信頼できないとこもリスキーなんだよな、ある程度なの知れたところを買うのが吉な気がする。
今回はお小遣い稼ぎが、目的っぽいけどやろうとすれば個人情報も抜けるしで怖すぎる。
なんかこういうマルウェアはたまたま世に出てきただけで、潜伏しているのはまだまだありそう。