《JSAC: A Novel Framework to Detect Malicious JavaScript via CNNs over AST and CFG》
《JSAC:一種基於AST和CFG的CNNs惡意JavaScript檢測框架》
作者:Hongliang Liang, Yuxing Yang, Lu Sun, Lin Jiang
簡介:作者的創新點在於用AST(抽象語法樹)和CFG(控制流圖)作爲語法和語音特徵提取,再用樹卷積和圖卷積進行處理,最後得到的兩個特徵合併後分類。
一、加入CFG的原因
不同程序可能形成相同的AST,如下圖所示:
二、模型結構
對於要處理的JS代碼文件,JSAC模型先構建出它的AST和CFG。一方面,用單層神經網絡模型以學習AST中不同的結點類型對應的分佈向量表示,並將AST的結點映射爲這些學習到的分佈式向量;另一方面,隨機初始化了CFG中指令類型的分佈式向量,CFG的指令根據不同類型被映射爲對應的分佈式向量。
JSAC模型應用了能夠處理樹結構的TBCNN模型和能夠處理圖結構的GBCNN模型。AST的分佈式向量表示被送入TBCNN,有該模型對程序的語法信息進行分析,並從中提取出語法特徵;CFG的分佈式向量表示送入GBCNN模型,由該模型對程序的語義信息進行分析,並提取語義特徵。最後TBCNN和GBCNN都應用了動態池化方法,以固定特徵向量的維度。
之後,語法特徵向量和語義特徵向量被進一步合併起來。
最後,JSAC模型的輸出層是若干全連接層,並應用softmax函數映射輸出結果。
三、總結
這篇文章引入了CFG,並用對應的CNN去處理,這是很不錯的創新點。但是之後將兩個特徵進行合併,這其實是不太友好的。文章將JS文件轉化爲AST用的是開源工具Esprima。CFG是通過AST得到的,但是過程代碼是作者修改GitHub上進行的,修改後的代碼並未開源。