Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# 暗号とセキュリティ

WebAssemblyとクリプトジャッキングの脅威

WebAssemblyは、ユーザーが理解しなければならないクリプトジャッキングのような新しいリスクをもたらすよ。

― 1 分で読む


WebAssemblyにおWebAssemblyにおけるクリプトジャッキングの脅威ングのリスクを明らかにする。WebAssemblyとクリプトジャッキ
目次

WebAssembly、通称wasmは、ウェブ上でコードを実行する新しい方法だよ。開発者はC、C++、Rustみたいな言語でコードを書いて、ブラウザで素早く安全に実行できるんだ。これってすごく重要で、パワフルなウェブアプリケーションを作るチャンスを広げてくれるんだ。でも、新しい技術にはセキュリティリスクもあるんだよね。一つの大きなリスクはクリプトジャッキング。これは悪意のある連中が誰かのコンピュータを密かに使って暗号通貨をマイニングする方法だ。

クリプトジャッキングは、ユーザーが気づかないうちに起こるから、危険な脅威なんだ。WebAssemblyが人気になるにつれて、クリプトジャッキングでどう使われているのか、そしてそれをどう防ぐかを理解するのがめっちゃ大事だよ。

WebAssemblyって何?

WebAssemblyは、ウェブブラウザで動くために設計された低レベルのプログラミング言語だ。速くて効率的で安全に作られているから、開発者にとって魅力的なんだ。WebAssemblyを使うと、アプリケーションはネイティブアプリケーションみたいにほぼ同じ速さで動きます。ネイティブアプリケーションってのは、コンピュータのOS上で直接動くプログラムのことね。

WebAssemblyを使うと、既存のコードをJavaScriptに書き直さなくてもブラウザで実行できるから、デスクトップアプリをウェブに移植するのが簡単になる。これでパフォーマンスとユーザー体験が向上するんだ。2017年の登場以来、WebAssemblyは大手テック企業や開発者の注目を集めてきたよ。

クリプトジャッキングについて理解する

クリプトジャッキングは、攻撃者が他人のコンピュータ資源を使って、暗号通貨を無断でマイニングするサイバー攻撃の一種だ。クリプトジャッキングは、WebAssemblyを使ってバックグラウンドでマイニングスクリプトを実行する脆弱なウェブサイトを通じて起こることがある。

暗号通貨のマイニングは計算が重たいプロセスで、CPUのパワーを使うから、デバイスが遅くなることが多い。クリプトジャッキングの難しいところは、被害者が自分のデバイスが悪用されていることに気づかないことがあるんだ。

クリプトジャッキングの仕組み

ユーザーが脆弱なウェブサイトを訪れると、ブラウザがWebAssemblyバイナリの形で悪意のあるコードをダウンロードすることがある。このコードは速く効率的に動くことが多くて、ユーザーのデバイスを使って暗号通貨の重作業をするんだ。マイニングってのは、新しい暗号通貨コインを作るために複雑な数学の問題を解くプロセスだよ。

ウェブサイトを訪れるだけでマイニングプロセスが起こることもあって、ユーザーは何もクリックしなくてもデバイスがマイニングに使われることがある。ブラウザがWebAssemblyコードを実行し、バックグラウンドでマイニングが始まるんだ。

検出の課題

クリプトジャッキングを見つけるのは難しいことがある。普通のウェブトラフィックに溶け込んだり、正当なアプリのように振る舞ったりする賢い方法があるからね。従来の検出方法はアプリの動作を分析することに頼っているけど、クリプトジャッキングを見逃すこともあるんだ。さらに、WebAssemblyは本来の意図を隠しながら動作できるから、検出がさらに難しくなる。

クリプトジャッキングを検出する方法の一つは、CPUやメモリの使用状況や異常なネットワークトラフィックをチェックすることだ。でも、多くの検出ツールはWebAssemblyバイナリに特化していないから、これが悪用されているのを見つけるのがさらに難しくなることがある。

難読化技術

クリプトジャッキングに対抗する一つの方法は、難読化だ。これはコードやバイナリを分析しにくくするプロセスだ。WebAssemblyの文脈では、難読化によってコードが見た目は変わるけど、同じ機能を果たすように変換される。だから、検出器がコードを分析しようとしても、悪意のある行動を認識しないかもしれない。

いくつかの難読化技術が使われることがあるんだ:

  1. 制御フロー難読化: プログラムの実行順序やフローを変更する方法。例えば、偽の条件を加えたり、ループの動作を変えたりして、検出ツールを混乱させる。

  2. データ難読化: コード内のデータの表現を変える技術。これにより、コードを分析する人が何をしているのか理解しにくくなる。特定の値をエンコードしたり、データ構造を認識しにくい形に分解することを含む。

  3. 予防的変換: これらの調整は、通常使われるリバースエンジニアリング技術を妨害することを目指している。例えば、デバッグや改ざんを検出する技術なんか。

  4. レイアウト難読化: コード要素の配置を変えて、読みやすさやトレースを難しくする。

こういう技術を使うことで、検出方法がコードの本当の性質を特定するのが難しくなり、クリプトジャッキングの試みを見逃すことが狙いなんだ。

難読化評価の重要性

難読化技術が効果的かどうかを確認するためには、コード検出とパフォーマンスへの影響を評価するのが重要だ。難読化方法が悪意のある行動をどれだけ隠せるかを評価することが、クリプトジャッキングを防ぐ上での価値を理解するのに必要なんだ。

効果的な評価は、いくつかの重要な側面を測定する:

  1. 効果: 難読化はコードの本当の意図をどれだけ隠すか?生成されたバイナリは、検出器が悪意のある行動を認識するのが難しいほど異なるか?

  2. 検出可能性: 難読化されたバイナリは、既存の検出ツールからうまく逃れられるか?これは、特定の検出方法に対してどのタイプの難読化が最適かを判断することを含む。

  3. オーバーヘッド: 難読化によってパフォーマンスに影響を与えるほどの処理オーバーヘッドが発生するか?これは、難読化されたコードが元のコードよりも遅く動くかどうかを調べることを意味する。

実験設定

難読化技術を分析する実験では、C言語で書かれたさまざまな既存のアプリケーションが使われた。目標は、これらのアプリケーションに異なる難読化方法を適用してWebAssemblyにコンパイルし、一般的な検出戦略に対する効果を評価することだった。テストで使用されたツールには以下が含まれる:

  • Tigress: さまざまな変換を適用するソースからソースへの難読化ツール。
  • emcc-obf: 難読化サポートを内蔵した人気のWebAssemblyコンパイラの改良版。
  • wasm-mutate: WebAssemblyバイナリの多様化に焦点を当てたツール。

難読化を適用した後、結果のアプリケーションはクリプトジャッキング検出方法を使って、隠れたマイニング活動を識別できるかどうかをテストされた。

難読化技術の結果

実験では、難読化方法の効果についていくつかの洞察が得られた。

  1. 一般的な効果: Tigressは、検出ツールが分析するのが難しいコードを生成するのに最も効果的であることが分かった。元のバージョンとはかなり異なるバイナリを生成することができた。

  2. 検出可能性: 検出方法に対してテストしたところ、多くの難読化されたバイナリが認識を逃れ、特に制御フローベースの難読化技術を使用したものが成功した。

  3. オーバーヘッド: 一部の難読化技術は、処理に使われるパワーの面でパフォーマンスの低下を引き起こしたが、他の技術はパフォーマンスを維持したり、改善したりした。これは、難読化がリアルタイムの操作に深刻な影響を与えずに戦略的に適用できることを示唆している。

  4. アプリケーション固有の結果: 特定の変換の効果は、難読化されるアプリケーションの種類によって異なることが多い。例えば、クリプトジャッキングマイナーは算術エンコーディング技術からより多くの利益を得られた。

結論

WebAssemblyの台頭は、チャンスと課題をもたらす。複雑なアプリをウェブブラウザで直接実行できる能力は、開発者に新しい可能性を開くけれど、ユーザーにはクリプトジャッキングを含むリスクもさらされることになる。

攻撃者が悪意のある目的でWebAssemblyのような技術に目を向ける中で、効果的な対策を研究し続けることが重要だ。難読化技術はクリプトジャッキングリスクを軽減する一つの方法だけど、進化する脅威に対抗するためには継続的な評価と適応が必要だよ。

これらのリスクについての認識を高めて、より良い検出方法を開発することが、WebAssemblyの利点を享受しながらセキュリティを損なわないための鍵になる。クリプトジャッキング問題に効果的に取り組むことで、ユーザーは自分のデバイスが悪意のある目的で密かに悪用されていないと安心できるんだ。

オリジナルソース

タイトル: Cryptic Bytes: WebAssembly Obfuscation for Evading Cryptojacking Detection

概要: WebAssembly has gained significant traction as a high-performance, secure, and portable compilation target for the Web and beyond. However, its growing adoption has also introduced new security challenges. One such threat is cryptojacking, where websites mine cryptocurrencies on visitors' devices without their knowledge or consent, often through the use of WebAssembly. While detection methods have been proposed, research on circumventing them remains limited. In this paper, we present the most comprehensive evaluation of code obfuscation techniques for WebAssembly to date, assessing their effectiveness, detectability, and overhead across multiple abstraction levels. We obfuscate a diverse set of applications, including utilities, games, and crypto miners, using state-of-the-art obfuscation tools like Tigress and wasm-mutate, as well as our novel tool, emcc-obf. Our findings suggest that obfuscation can effectively produce dissimilar WebAssembly binaries, with Tigress proving most effective, followed by emcc-obf and wasm-mutate. The impact on the resulting native code is also significant, although the V8 engine's TurboFan optimizer can reduce native code size by 30\% on average. Notably, we find that obfuscation can successfully evade state-of-the-art cryptojacking detectors. Although obfuscation can introduce substantial performance overheads, we demonstrate how obfuscation can be used for evading detection with minimal overhead in real-world scenarios by strategically applying transformations. These insights are valuable for researchers, providing a foundation for developing more robust detection methods. Additionally, we make our dataset of over 20,000 obfuscated WebAssembly binaries and the emcc-obf tool publicly available to stimulate further research.

著者: Håkon Harnes, Donn Morrison

最終更新: 2024-03-22 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2403.15197

ソースPDF: https://arxiv.org/pdf/2403.15197

ライセンス: https://creativecommons.org/licenses/by/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

類似の記事