• 検索結果がありません。

異なるコンパイラと ISA

ドキュメント内 令和 (ページ 67-70)

第 5 章 提案手法の有効性と課題に関する考察

5.4 異なるコンパイラと ISA

Malware のコードは,生成したコンパイラやプロセッサの ISA(Instruction Set

Architecture)が異なればコード自体も異なる。これらの差異を本論文の提案手法

が吸収でき,同等の識別性能を発揮できるかどうか考察する必要がある。

図5.4は,コンピューティングスタックを示したものである。コンパイラは,

機械語生成処理の過程で,実行コードに必要なライブラリとAPIなどのRuntime コードを組み込む。Malwareは,レジストリ設定ファイルの修正・変更,他のプ ロセスや OS コマンドを実行させるコードインジェクション,通信機能などの APIコールなどのため,Runtimeコードやライブラリを多数取り込む。さらに,

これら Runtime コードやライブラリは,処理速度やコードサイズの効率を上げ

るためにプロセッサに最適化(Micro Architectureの設計性能を引き出す)された機 械語で直接コーディングされており,プロセッサ開発元が共通ライブラリとし て提供しているケースが多い。リンケージなどのツール類は,コード実行効率化 のために,これらの提供ライブラリコードを共通利用する。このような背景か ら,異なるコンパイラでコンパイルした Malware であっても実行コード間の類 似度は高く,本提案のアルゴリズム手法への影響は少ないと推定する。

異なるプロセッサISAの課題[1]に関しては,対象とするEdgeへ内蔵されたプ ロセッサISA を標的としたMalware ファミリー群から特徴抽出したデータを学 習し,識別処理を実行することで解決できる。特にIoT Edgeシステムに使用さ れるプロセッサは,ARM系を基本とした拡張アーキテクチャが多数を占めてお

り,ARM対象のMalwareコードをカバーするようにMalwareサンプル評価結果

63

から特徴ベクトルを調整したシステムを用いれば良いと考える。

しかし,今後は,RISC-Vのような新しいISAのプロセッサの台頭も考慮する と,ISAの差異をどのように吸収すべきか課題が残る。この課題解決の糸口とし て押さえておきたい論理は,現在のコンピュータの基本的アーキテクチャはフ ォンノイマン型のLoad/Storeアーキテクチャを踏襲していることである(図5.5)。 これは,機械語実行レベルから見えるリソースが,記憶機構(Memory),演算機構 (Arithmetic Logic Unit), 命 令 や デ ー タ を 取 り 出 し 格 納 を 行 う 記 憶 制 御 機 構 (Memory Access),命令レジスタと演算レジスタ(Register File)と割り込み関係の 特権命令に使う(Flag Register)などであり,異なる ISA 間であっても基本的動作 を行う機械語命令のコード列の波形トレンドは,類似していると推定する。

これは,Malware Texture Imageを構造的に抽象化したパワースペクトルの解析

を行う本アルゴリズムは,共通機械語命令列の累積(局所的特徴)を計算するだけ

で無く,Malwareコード全体が持つ大局的特徴をヒストグラムとして表現し,そ

れが持つパワースペクトルの波形トレンドを特徴量として解析することができ るからだと考えている。

但し,これら仮説に関しては,静的コード解析手法などの厳密なコード解析と の実験比較により実証できることから,本研究においては,課題として残る。

The Concept of Computing System Stack.

図5.4 一般的なコンピューティングスタック構成

Fundamentally CPU Function Diagram.

図5.5 基本的プロセッサの機能構成

Hardware

Semiconductor Circuit

Logic Micro Architecture

Architecture Runtime System Programing Language

Algorithm Solution/Application Software

Instruction Execution System.

(Out of Order, Microcode, etc.) ISA

Instruction Set Architecture (ARM, x86, mips, RISC-V, etc.)

OS(Linux, etc.), VM, API C, C++, Python, etc.

Compiler

Machine Code

Memory/IO

Arithmetic Logic Unit (Execution) Register File

Memory

Access MUX

Program Counter

Flag Register

65

ドキュメント内 令和 (ページ 67-70)

関連したドキュメント