5465 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / run_c01.sh SH
#!/bin/bash
# Boot QEMUv8 and run the C-01 PoC to reproduce the PKCS#11 heap overflow.
set -e

ROOT="$(cd "$(dirname "$0")" && pwd)"
BINDIR="$ROOT/out/bin"
QEMU="$ROOT/qemu/build/qemu-system-aarch64"

# Verify required artifacts
for f in bl1.bin Image rootfs.cpio.gz c01_poc; do
    [[ -f "$BINDIR/$f" ]] || { echo "[-] Missing: $BINDIR/$f"; exit 1; }
done

# Build QEMU args (matching qemu_v8.mk defaults + virtfs share)
QEMU_ARGS="\
  -nographic \
  -smp 2 \
  -cpu max,sme=on,pauth-impdef=on \
  -d unimp \
  -semihosting-config enable=on,target=native \
  -m 1057 \
  -bios bl1.bin \
  -initrd rootfs.cpio.gz \
  -kernel Image \
  -append 'console=ttyAMA0,38400 keep_bootcon root=/dev/vda2' \
  -machine virt,acpi=off,secure=on,mte=off,gic-version=3,virtualization=false \
  -object rng-random,filename=/dev/urandom,id=rng0 \
  -device virtio-rng-pci,rng=rng0,max-bytes=1024,period=1000 \
  -netdev user,id=vmnic \
  -device virtio-net-device,netdev=vmnic \
  -fsdev local,id=fsdev0,path=$BINDIR,security_model=none \
  -device virtio-9p-pci,fsdev=fsdev0,mount_tag=host \
  -serial mon:stdio \
  -serial file:$BINDIR/c01_sw.log"

export QEMU
export QEMU_ARGS
export BINDIR

cd "$BINDIR"
rm -f c01_nw.log c01_sw.log

echo "[*] Starting QEMUv8 for C-01 reproduction..."
expect "$ROOT/c01_check.exp"
RC=$?

echo ""
echo "=== Secure World log (c01_sw.log) ==="
grep -E "Panic|panic|PANIC|assertion|overflow|ERROR|TEE_Panic|TA crashed|killed" \
    "$BINDIR/c01_sw.log" 2>/dev/null || echo "(no panic keywords found — see full log)"
echo "=== End of SW log summary ==="
echo ""
echo "Full logs: $BINDIR/c01_nw.log  $BINDIR/c01_sw.log"
exit $RC