Xamarin for Androidの脆弱性:DLLを置き換えて無料で食べる

はじめに



この話は昨年の夏から始まりました。友人と私は、モバイル割引アプリケーションを導入したばかりの夜にファーストフード店に行きました。 アプリケーションがインストールされ、無料の食べ物が受け取られ、トラフィックが.pcapファイルに保存されました。もちろん、それを詳しく調べて、その仕組みを調べたいという要望がありました。 このプログラムは、Xamarinモバイルアプリケーションを開発するためのマルチプラットフォームフレームワークを使用して、C#で記述されていることが判明しました。 そのとき、apktoolは変更されたapkを正しくビルドできず、失敗しました。 私は長い間、このアプリケーションを使用し、ポイントを蓄積し、それらを費やし、時にはフォーラムのチート投稿にぶつかったが、チートアカウントはかなり早く禁止された。



何かを探求する興奮と欲求は、それが私に通常起こるように、どこからともなく現れません。 今回はスポンサーが泥棒で、すべての銀行カードを財布に入れてくれました。事前にポイントを獲得していたので、この施設で自分でランチを買うしかありませんでした。 はい、@ Chikeyとは異なり 、コーヒーは好きではありません。 ただし、この記事ではそれについてまったく説明しません。



画像

変更された名前は、機関の本名に非常に似ています



アプリ



前述したように、アプリケーションはC#で記述され、Xamarinを使用してコンパイルされます。 いくら試しても、アプリケーションを再パッケージ化して機能を維持することはできません。 apktoolを使用して再パックするとすぐに黒い画面しか表示されず、zipパッカーを介してapkファイル内の変更されたファイルを更新しても、望ましい結果が得られませんでした。 ある時点で、別の壊れたアセンブリをインストールしたときに、フレームワークがapkからだけでなくSDカードから変更されたdllを次の方法でロードしようとしていることに気付きました。

/storage/sdcard0/Android/data/app_id/files/.__override__/
      
      





ご覧のとおり、このパスはSecure Storageにはありません。どのアプリケーションでも、特別な権限なしにこのパスに沿ってファイルを書き込むことができます。 悪意のあるアプリケーションは、感染ファイル(たとえば、Xamarinを使用したアプリケーションの配布にあるSystem.dllおよびMono.Android.dll)を配置でき、apk内で.dllの代わりに使用されます。 この動作はXamarin 5.1以降でのみ修正されています;フレームワークの以前のバージョンは、マップからパッケージ内のライブラリへのライブラリを常に優先します。 攻撃者は、プログラムのロジックを変更したり、ユーザーアクションを記録したり、指定されたディレクトリ内の入力データを置換したりする修正されたライブラリを配置できます。



この脆弱性は、4つの一般的なアプリケーションと1つのモバイルクライアントバンクで悪用されています。 脆弱性を知らされたすべての開発者は、ソフトウェアを更新しました。



どうする



AndroidアプリケーションでXamarinを使用する場合は、リリースモードでデバッグ文字なしで、フレームワークの最新バージョンでXamarinを再構築します。



完全開示ニュースレター



だから食べる。



All Articles