ACTOR 퍼저 빌드
WSL 환경에서 ACTOR 커널 퍼저를 빌드하고 실행하는 과정을 단계별로 정리한 글입니다.
빌드 환경
필자는 WSL 환경에서 빌드를 진행하였다.
CPU : 16코어
MEM : 32GB
ACTOR: Action-Guided Kernel Fuzzing 빌드
작업 디렉토리 : /usr/src/kernel
git clone https://github.com/ucsb-seclab/actor.git cd actor
해당 레포지토리 클론 후 클론 한 디렉토리로 이동한다.
git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git cd linux git checkout 2241ab53cbb5cdb08a6b2d4688feb13971058f65 git apply ../setup/kernel/v6-2-rc5.patch
이어서, 리눅스 파일을 클론하고, 체크아웃 설정, 패치 적용을 진행한다.
make clean make mrproper make menuconfig ESC 두 번 눌러서 menuconfig 종료 ./scripts/kconfig/mergeconfig.sh .config ../setup/kernel/actor.config make -j"$(nproc)"
그런 다음 커널 빌드를 수행한다.
cd /usr/src/kernel/actor/semantic-inference docker build -t sem-infer . cd ..
이어서 정적 분석을 위한 도커를 빌드한다.
이 때 도커 빌드에 에러가 난다면 /usr/src/kernel/actor/semantic-inference/Dockerfile 파일을 다음과 같이 수정한다.
FROM debian:bookworm
ENV DEBIANFRONTEND=noninteractive RUN apt update && apt install -y llvm-14 clang-14 clang cmake flex bison bc libelf-dev libssl-dev ADD ktypes.cpp CMakeLists.txt actorstatic.config /plugin/ WORKDIR /plugin/ RUN mkdir build && cd build && cmake .. && make
RUN echo "clang-14 -g -fexperimental-new-pass-manager -fpass-plugin=/plugin/build/libktypesPass.so \"\$@\"" > /bin/clang-ktypes && chmod +x /bin/clang-ktypes CMD make -C /kernel/ -j nproc CC=clang-ktypes
또 안 된다면 GPT에게 여쭤보자
docker run -ti -v "/usr/src/kernel/actor/linux":/kernel --entrypoint /bin/bash sem-infer
빌드한 도커를 실행 한다.
해당 명령어는 도커 내부에서 실행
cd /kernel make olddefconfig CC=clang-ktypes CC=clang-ktypes ./scripts/kconfig/mergeconfig.sh .config /plugin/actorstatic.config make -C /kernel/ -j nproc CC=clang-ktypes 2> /kernel/ptrs.txt exit
도커 내부에서 해당 명령어 실행 한다.
댓글