kasper
1.0.0
Linux 커널용 추측 실행 가젯 스캐너인 Kasper를 소개합니다. Kasper는 오염 분석 정책을 사용하여 임시 경로에서 임의의 소프트웨어/하드웨어 취약점을 악용하여 데이터를 제어하고(예: 메모리 마사지 또는 LVI를 통해) 비밀에 액세스할 수 있는 공격자를 모델링합니다. 무료 액세스) 및 이러한 비밀을 유출합니다(예: 캐시 기반, MDS 기반 또는 포트 경합 기반 비밀 채널을 통해). 커널이 일시적 실행 공격에 대해 강력하게 강화되었음에도 불구하고 Kasper는 아직 완화되지 않은 수백 개의 가젯을 찾습니다. 여기에서 전체 논문을 찾을 수 있습니다.
작업 실행자로 go-task를 포함하여 종속성을 설치합니다.
sudo apt install build-essential clang-11 lld-11 libelf-dev qemu-system-x86 bison flex golang libssl-dev cmake debootstrap python3-pexpect socat ninja-build ccache
sudo sh -c "$(curl -ssL https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin
git 하위 모듈 초기화/업데이트(처음 실행하는 데 시간이 좀 걸립니다):
task update
syzkaller와 함께 사용할 initramfs 및 디스크 이미지를 만듭니다.
task initramfs:create
task syzkaller:create-image
Kasper 지원을 통해 LLVM을 구성하고 빌드합니다.
task llvm:config llvm:build
Kasper 지원으로 syzkaller를 빌드하세요.
경고 : 우리가 사용하는 syzkaller 버전은 golang 1.15에서만 작동합니다(우리는 golang 1.15.15를 사용하고 있습니다)!
task syzkaller:build
Kasper 계측 Linux 커널을 구성하고 빌드합니다.
task kernel:config build kernel:bzImage
계측된 커널이 올바르게 실행되는지 테스트합니다.
task qemu:test
계측된 커널을 퍼지합니다.
task syzkaller:run-nobench
가젯을 집계하고 평가를 실행하려면 kasper-results를 확인하세요.