DF-0736 / setup.sh
#!/bin/sh # DF-0736 trigger setup: rebuilds netgraph.ko + ng_socket.ko + ng_ipfw.ko # (patched to load standalone) + df736attack.ko, then triggers the panic. set -e echo "=== 1. Rebuild netgraph.ko from source ===" cd /usr/src/sys/netgraph7/netgraph && make clean && make cp /boot/kernel/netgraph.ko /boot/kernel/netgraph.ko.shipped 2>/dev/null || true mount -uw /boot 2>/dev/null || mount -uw / cp netgraph.ko /boot/kernel/netgraph.ko echo "=== 2. Rebuild ng_socket.ko ===" cd /usr/src/sys/netgraph7/socket && make clean && make cp ng_socket.ko /boot/kernel/ng_socket.ko echo "=== 3. Set up ng_ipfw.ko (with patched include + stripped MODULE_DEPEND) ===" mkdir -p /usr/src/sys/netgraph7/ipfw/netinet cp /usr/src/sys/netgraph7/ng_ipfw.c /usr/src/sys/netgraph7/ipfw/ cp /usr/src/sys/netgraph7/ng_ipfw.h /usr/src/sys/netgraph7/ipfw/ ln -sf /usr/src/sys/net/ipfw/ip_fw.h /usr/src/sys/netgraph7/ipfw/netinet/ip_fw.h # Strip the MODULE_DEPEND on ipfw so it loads without ipfw2 firewall module sed -i "" -e "/MODULE_DEPEND.*ng_ipfw.*ipfw/d" /usr/src/sys/netgraph7/ipfw/ng_ipfw.c cat > /usr/src/sys/netgraph7/ipfw/Makefile <<EOF KMOD= ng_ipfw SRCS= ng_ipfw.c WARNS= 0 KCFLAGS+= -I/usr/src/sys/netgraph7 .include <bsd.kmod.mk> EOF cd /usr/src/sys/netgraph7/ipfw && make clean && make echo "=== 4. Load netgraph + ng_socket + ng_ipfw ===" kldload netgraph kldload ng_socket kldload /usr/src/sys/netgraph7/ipfw/ng_ipfw.ko echo "kldstat:" kldstat | tail echo "=== 5. Verify the ipfw netgraph node exists ===" ngctl list echo "=== DONE setup ===" |