機械学習/深層学習でマルウェア分類することの意味とは

またまたごぶさたしています。ようやっと仕事に余裕が出てきました。

最近、うちの学生が深層学習でマルウェア分類する研究をしています。これはもうそろそろ発表されるので言ってもいいと思うんですけれども、具体的には、マルウェアバイナリを画像変換して、CNN系の学習をかけています。

画像変換!?

おまゆう!?

とおっしゃるでしょうね。ええ、ええ。確かに以前のブログで私は画像化して分類することに、批判ではないんですけれども疑問を投げかけましたとも。でも学生がやることを止められます?止められないではないですか(開き直り)

まあ、別にそのことはいいんです(論点ずらし!?)。今回言いたいのはそのことじゃなく、マルウェア分類そのものについてです。この学生の成果もありがたいことにですが、他の先行研究でも、分類を行って、かなりいい成果を出してます(F1値0.97、Accuracy0.99とか)。でも、そのこの単体では、マルウェアを発見し分類するという実際の活動において、どんな意味があるんですかね?

例えば、この学生の使っているデータセットは2種類。1つは、kaggleで公開されているMicrosoft Malware Classification Challenge (BIG 2015)。こちらは、コンテスト用に提供されているもので、PEヘッダが削除されているため、そのままでは実行できず安全に扱えるのが特徴です。もう一つは、Malimg Datasetと呼ばれるもので、文字通り、マルウェアデータを画像変換したデータセットです。Dropboxでダウンロードできるようになっています。kaggleの方は9種類、Malimgは25種類のマルウェアファミリで構成されています。

…ということはですよ。先ほどの先行研究にしろ高い精度ってのは、必ず9なり25種類のどれかに分類されることが分かっているデータでやっての話であって、現実にはそれ以外のファミリ、ひいては未知のマルウェアもある訳で、もしそんなマルウェアが来た際に9なり25種類のどれかに分類してしまったら、それは正しい結果ではないですよね。では、この分類器を現実のマルウェア解析で使おうとすると、まず、9ないし25種類以外のファミリらしきものはあらかじめ除いておいて、それから分類器にかけるということになりますが…なんでしょうね。それって。
…という議論に先日のゼミでなったので、メモしておいたのでした。

何が言いたいかというと、見た目結果よさそうな研究でも、現実的にそれってどう役に立つの?っていうのが多々あるってのと、特にうちのドクターに行くような学生には、もっとそういう実際的、かつ俯瞰的な観点からマルウェアの研究を行ってほしいところです。

…あくまで、「うちの学生」向きに話してるので、今回は(?)喧嘩売ってないと思いますよー。