見出し画像

ソフトウェアのインストールが不要なNIC型セキュリティ機構

上田 侑真(うえだ ゆうま)

 上田君はネットワーク・インタフェース・コントローラ(NIC)型の独自PCIeデバイス「BuboFPGA」を開発し,ホストコンピュータ上のメモリの内容を遠隔からDMAで取得できるシステムを構築した.今回開発したBuboFPGAデバイスを監視対象のホストコンピュータ(Target)に挿すだけで,遠隔の管理マシン(Monitor)からホスト側のメモリの内容を後述するLibBuboとVolBuboフレームワークを用いて逐次監視・復元し,リアルタイムでマルウェアを検知できる仕組みである(図-1).

画像1

図-1 開発したBuboFPGA関連システム構成図

 (1)BuboFPGAはTargetのメモリ空間の取得を行うハードウェアで,Xilinx Kintex-7 KC705 FPGA評価ボードを使ってバージョンアップを繰り返し,大変苦労しながら実装した(図-2).メモリ空間の取得は,BuboFPGAがNICを通じて受信したTransaction Layer Packet(TLP)をそのままTargetのルートコンプレックスまで中継し,CPUを介さずにDMAを行い,返されたメモリ上のデータを含むTLPをそのままMonitorまでUDPにカプセリングして返すことで実現している.

画像2

図-2 KC705に実装したBuboFPGA v2.0の構成図

 (2)LibBuboはBuboFPGAを通じて物理マシンのメモリ空間を取得し,PCIeデバイスのエミュレーションを実現するためのソフトウェアライブラリである.物理マシンのメモリ空間を取得するために,Socket APIのラッパーを用意し,TLPをUDP上にカプセリングしてBuboFPGAのNICへ送信しやすくしている.EPT(Extended Page Table)にも対応することで,ホストコンピュータ上で仮想マシンを複数起動していても,ゲスト物理アドレスを用いた透過的なメモリ取得が可能となっている.

 (3) VolBuboはメモリ空間上のデータをVolatilityへの入力として提供するためのAddress Space Pluginである.これにより,既存のVolatilityプラグインをTargetの物理メモリ空間や仮想メモリ空間にそのまま使用することできる.

 これらの開発成果により,非常に高い隠密性・透明性を持ったマルウェア検知・解析をVolatilityプラグインとして素早く実装することが可能となった.BuboFPGAは監視対象のホストのCPUリソースを一切消費しないため,従来のセキュリティ機構とも競合しない.近年はメモリ上だけで動作しディスクにマルウェア本体を保存しないファイルレスマルウェアなども台頭しており,この開発成果と従来のセキュリティ機構を併せて用いることで,より信頼性の高いセキュリティ機構を実現できると言える.(竹迫良範PM担当)

[関連URL]
Volatilityについては,https://github.com/volatilityfoundation

[統括PM追記] 借りていて権限のないシステムにNICを指すだけで,遠隔監視やセキュリティ事故への対処が可能になるのはクライアントの管理者にとっては朗報だ.思い切り低レイヤのプロジェクトであるが,これをアドベンチャゲームを攻略するように仕上げた上田君はある意味新人類だと思う.

(2021年6月30日受付)
(2021年8月15日note公開)