
Meltdown Exploit / 개념 증명(PoC) / 시스템이 Variant 3: rogue data cache load(CVE-2017-5754), 일명 MELTDOWN의 영향을 받는지 확인합니다.

개념 증명(Proof-of-concept) /
익스플로잇(Exploit) /
시스템이 Variant 3: rogue data cache load (CVE-2017-5754), 일명 MELTDOWN의 영향을 받는지 확인합니다.
기본 아이디어는 사용자가 실행 중인 시스템이 예를 들어 KAISER 패치셋(https://lkml.org/lkml/2017/10/31/884)과 같은 것으로 제대로 패치되었는지 알 수 있다는 것입니다.
Meltdown 개념 증명을 안내하는 제 블로그 글을 확인해 보세요: http://funwithbits.net/blog/programmers-guide-to-meltdown/
*** 현재는 Linux에서만 동작합니다 ***
/proc/kallsyms를 사용하여 시스템 콜 테이블을 찾고, MELTDOWN을 악용하여 찾은 시스템 콜의 주소가 /proc/kallsyms에 있는 해당 주소와 일치하는지 확인하는 방식으로 동작합니다.
클론한 후 make를 실행하여 프로젝트를 컴파일하고, meltdown-checker를 실행하세요:
git clone https://github.com/raphaelsc/Am-I-affected-by-Meltdown.git
cd ./Am-I-affected-by-Meltdown
make
taskset 0x1 ./meltdown-checker
Unable to read /proc/kallsyms...
이는 시스템이 /proc/sys/kernel/kptr_restrict를 1로 설정하여 프로그램이 /proc/kallsyms에서 커널 심볼을 읽는 것을 차단하고 있을 수 있기 때문입니다.
다음 명령으로 문제를 해결할 수 있습니다:
sudo sh -c "echo 0 > /proc/sys/kernel/kptr_restrict"
Unable to read /boot/System.map-.
이는 시스템에 /boot가 마운트되어 있지 않기 때문일 수 있습니다. 이 프로그램은 해당 파티션에 의존하므로 먼저 /boot 파티션을 마운트해야 합니다.
이 시나리오에서 다른 방식으로 대체할 아이디어가 있다면 이슈를 열어 주세요.

Checking whether system is affected by Variant 3: rogue data cache load (CVE-2017-5754), a.k.a MELTDOWN ...
Checking syscall table (sys_call_table) found at address 0xffffffffaea001c0 ...
0xc4c4c4c4c4c4c4c4 -> That's unknown
0xffffffffae251e10 -> That's SyS_write
System affected! Please consider upgrading your kernel to one that is patched with KAISER
Check https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html for more details