DragonFlyBSD Kernel Audit
DF-2619 / build.sh
← back to finding ↓ download raw
#!/bin/sh
# DF-2619 build: base image in guest, forge on host, compile probes in guest.
set -e
CD=$(dirname "$0")

# 1. guest (root): base image with one 255-char-named file
ssh -F dfbsd-qemu/config dfbsd 'mkdir -p /root/poc/dfv /mnt/h2x'
ssh -F dfbsd-qemu/config dfbsd 'vnconfig -u vn0 2>/dev/null || true; cd /root/poc/dfv && truncate -s 64M base2619.img && newfs_hammer2 -L testvol base2619.img >/dev/null && vnconfig -c vn0 /root/poc/dfv/base2619.img && mount -t hammer2 /dev/vn0@testvol /mnt/h2x && head -c 255 /dev/zero | tr "\0" A > "/mnt/h2x/$(head -c 255 /dev/zero | tr "\0" A)" && sync && umount /mnt/h2x && vnconfig -u vn0 && echo BASE2619_OK'
scp -F dfbsd-qemu/config dfbsd:/root/poc/dfv/base2619.img "$CD/"

# 2. host: forge
python3 "$CD/forge_2619.py" "$CD/base2619.img" "$CD/craft2619.img"

# 3. guest: compile + push
scp -F dfbsd-qemu/config "$CD/getdents_dump.c" "$CD/statprobe.c" \
    "$CD/run_2619.sh" dfbsd:/root/poc/dfv/
scp -F dfbsd-qemu/config "$CD/craft2619.img" "$CD/base2619.img" dfbsd:/root/poc/dfv/
ssh -F dfbsd-qemu/config dfbsd 'cc -O -o /root/poc/dfv/getdents_dump /root/poc/dfv/getdents_dump.c && cc -O -o /root/poc/dfv/statprobe /root/poc/dfv/statprobe.c && sync && echo BUILD_OK'