>Synopsis: opening and closeing bpf rapidly causes problems >Category: system >Environment: System : OpenBSD 7.0 Details : OpenBSD 7.0 (GENERIC.MP) #1332: Thu Sep 30 16:53:51 MDT 2021 dera...@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/GENERIC.MP
Architecture: OpenBSD.arm64 Machine : arm64 >Description: Trying to attack a switch on my own network caused my raspberry pi to freeze (watchdog rebooted it). Though after disabling watchdog it just froze. Whether there is a panic I could not tell as I'm console-less and my dongle for serial doesn't reach the wires to my Pi where it's currently located. It'd be a hardship. Thankfully I can repeat the problem. Other thankfulness is it can only be done as root in a default system. >How-To-Repeat: The following program repeats this: #include <sys/param.h> #include <sys/time.h> #include <sys/ioctl.h> #include <sys/socket.h> #include <net/bpf.h> #include <net/if.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> int open_filter(char *interface); int main(void) { int fd; for (int i = 0; i < 10000; i++) { fd = open_filter("bse0"); if (fd < 0) continue; close(fd); } exit(0); } /* * open the bpf devices and attach them to the corresponding interface that * is provided */ int open_filter(char *interface) { struct ifreq ifr; char buf[PATH_MAX]; int i = 0, fd; u_int hdrcomplete, dltype; do { snprintf(buf, sizeof(buf), "/dev/bpf%d", i++); fd = open(buf, O_RDWR, 0); } while (fd < 0 && errno == EBUSY); if (fd < 0) { perror("open"); return -1; } /* set interface on bpf */ memset(&ifr, 0, sizeof(ifr)); strncpy(ifr.ifr_name, interface, sizeof(ifr.ifr_name) - 1); if (ioctl(fd, BIOCSETIF, &ifr) < 0) { perror("ioctl 2"); close (fd); return -1; } /* write complete frame headers */ hdrcomplete=1; if (ioctl(fd, BIOCSHDRCMPLT, &hdrcomplete) < 0) { perror("ioctl 3"); return -1; } /* * If we're not ethernet return with -1 as there is no point opening * bpf for a utility that is a ethernet spoofer */ if (ioctl(fd, BIOCGDLT, &dltype) < 0) { perror("ioctl 4"); return -1; } if (dltype == DLT_EN10MB) return (fd); fprintf(stderr, "dltype != DLT_EN10MB, missing -l flag?\n"); errno = ENOSYS; close (fd); return -1; } >Fix: None provided. Unfortunately I don't have a DDB capable console. dmesg: OpenBSD 7.0 (GENERIC.MP) #1332: Thu Sep 30 16:53:51 MDT 2021 dera...@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/GENERIC.MP real mem = 8417255424 (8027MB) avail mem = 8126160896 (7749MB) random: good seed from bootblocks mainbus0 at root: Raspberry Pi 4 Model B Rev 1.4 psci0 at mainbus0: PSCI 1.1, SMCCC 1.2 cpu0 at mainbus0 mpidr 0: ARM Cortex-A72 r0p3 cpu0: 48KB 64b/line 3-way L1 PIPT I-cache, 32KB 64b/line 2-way L1 D-cache cpu0: 1024KB 64b/line 16-way L2 cache cpu0: CRC32,ASID16 cpu1 at mainbus0 mpidr 1: ARM Cortex-A72 r0p3 cpu1: 48KB 64b/line 3-way L1 PIPT I-cache, 32KB 64b/line 2-way L1 D-cache cpu1: 1024KB 64b/line 16-way L2 cache cpu1: CRC32,ASID16 cpu2 at mainbus0 mpidr 2: ARM Cortex-A72 r0p3 cpu2: 48KB 64b/line 3-way L1 PIPT I-cache, 32KB 64b/line 2-way L1 D-cache cpu2: 1024KB 64b/line 16-way L2 cache cpu2: CRC32,ASID16 cpu3 at mainbus0 mpidr 3: ARM Cortex-A72 r0p3 cpu3: 48KB 64b/line 3-way L1 PIPT I-cache, 32KB 64b/line 2-way L1 D-cache cpu3: 1024KB 64b/line 16-way L2 cache cpu3: CRC32,ASID16 efi0 at mainbus0: UEFI 2.7 efi0: https://github.com/pftf/RPi4 rev 0x10000 smbios0 at efi0: SMBIOS 3.3.0 smbios0: vendor https://github.com/pftf/RPi4 version "UEFI Firmware v1.27" date 05/25/2021 smbios0: Raspberry Pi Foundation Raspberry Pi 4 Model B apm0 at mainbus0 "system" at mainbus0 not configured "axi" at mainbus0 not configured simplebus0 at mainbus0: "soc" bcmclock0 at simplebus0 bcmmbox0 at simplebus0 bcmgpio0 at simplebus0 bcmaux0 at simplebus0 ampintc0 at simplebus0 nirq 256, ncpu 4 ipi: 0, 1: "interrupt-controller" bcmtmon0 at simplebus0 bcmdmac0 at simplebus0: DMA0 DMA2 DMA4 DMA5 DMA6 DMA7 DMA8 DMA9 "timer" at simplebus0 not configured pluart0 at simplebus0 com0 at simplebus0: ns16550, no working fifo "local_intc" at simplebus0 not configured bcmdog0 at simplebus0 bcmirng0 at simplebus0 "firmware" at simplebus0 not configured "power" at simplebus0 not configured "mailbox" at simplebus0 not configured sdhc0 at simplebus0 sdhc0: SDHC 3.0, 250 MHz base clock sdmmc0 at sdhc0: 4-bit, sd high-speed, mmc high-speed "gpiomem" at simplebus0 not configured "fb" at simplebus0 not configured "vcsm" at simplebus0 not configured "clocks" at mainbus0 not configured "phy" at mainbus0 not configured "clk-27M" at mainbus0 not configured "clk-108M" at mainbus0 not configured simplebus1 at mainbus0: "emmc2bus" sdhc1 at simplebus1 sdhc1: SDHC 3.0, 100 MHz base clock sdmmc1 at sdhc1: 8-bit, sd high-speed, mmc high-speed, ddr52, dma "arm-pmu" at mainbus0 not configured agtimer0 at mainbus0: 54000 kHz simplebus2 at mainbus0: "scb" bcmpcie0 at simplebus2 pci0 at bcmpcie0 ppb0 at pci0 dev 0 function 0 "Broadcom BCM2711" rev 0x10 pci1 at ppb0 bus 1 xhci0 at pci1 dev 0 function 0 "VIA VL805 xHCI" rev 0x01: intx, xHCI 1.0 usb0 at xhci0: USB revision 3.0 uhub0 at usb0 configuration 1 interface 0 "VIA xHCI root hub" rev 3.00/1.00 addr 1 bse0 at simplebus2: address dc:a6:32:cc:db:a7 brgphy0 at bse0 phy 1: BCM54210E 10/100/1000baseT PHY, rev. 2 "dma" at simplebus2 not configured "hevc-decoder" at simplebus2 not configured "rpivid-local-intc" at simplebus2 not configured "h264-decoder" at simplebus2 not configured "vp9-decoder" at simplebus2 not configured "leds" at mainbus0 not configured "sd_io_1v8_reg" at mainbus0 not configured "sd_vcc_reg" at mainbus0 not configured "fixedregulator_3v3" at mainbus0 not configured "fixedregulator_5v0" at mainbus0 not configured simplebus3 at mainbus0: "v3dbus" "bootloader" at mainbus0 not configured simplefb0 at mainbus0: 1920x1080, 32bpp wsdisplay0 at simplefb0 mux 1: console (std, vt100 emulation) wsdisplay0: screen 1-5 added (std, vt100 emulation) dt: 445 probes sdmmc1: can't enable card uhub1 at uhub0 port 1 configuration 1 interface 0 "VIA Labs USB2.0 Hub" rev 2.10/4.21 addr 2 bwfm0 at sdmmc0 function 1 manufacturer 0x02d0, product 0xa9a6 at sdmmc0 function 2 not configured manufacturer 0x02d0, product 0xa9a6 at sdmmc0 function 3 not configured uhidev0 at uhub1 port 1 configuration 1 interface 0 "American Power Conversion Back-UPS CS 650 FW:817.v9.I USB FW:v9" rev 1.10/0.06 addr 3 uhidev0: iclass 3/0, 98 report ids upd0 at uhidev0 uhid0 at uhidev0 reportid 1: input=0, output=0, feature=1 uhid1 at uhidev0 reportid 2: input=0, output=0, feature=1 uhid2 at uhidev0 reportid 3: input=0, output=0, feature=1 uhid3 at uhidev0 reportid 4: input=0, output=0, feature=1 uhid4 at uhidev0 reportid 5: input=0, output=0, feature=1 uhid5 at uhidev0 reportid 6: input=0, output=0, feature=2 uhid6 at uhidev0 reportid 8: input=0, output=0, feature=2 uhid7 at uhidev0 reportid 9: input=0, output=0, feature=2 uhid8 at uhidev0 reportid 10: input=0, output=0, feature=2 uhid9 at uhidev0 reportid 11: input=0, output=0, feature=2 uhid10 at uhidev0 reportid 12: input=1, output=0, feature=1 uhid11 at uhidev0 reportid 13: input=2, output=0, feature=2 uhid12 at uhidev0 reportid 14: input=0, output=0, feature=2 uhid13 at uhidev0 reportid 15: input=0, output=0, feature=1 uhid14 at uhidev0 reportid 16: input=0, output=0, feature=2 uhid15 at uhidev0 reportid 17: input=0, output=0, feature=1 uhid16 at uhidev0 reportid 18: input=0, output=0, feature=2 uhid17 at uhidev0 reportid 19: input=0, output=0, feature=3 uhid18 at uhidev0 reportid 20: input=0, output=0, feature=1 uhid19 at uhidev0 reportid 21: input=0, output=0, feature=2 uhid20 at uhidev0 reportid 22: input=1, output=0, feature=1 uhid21 at uhidev0 reportid 23: input=0, output=0, feature=1 uhid22 at uhidev0 reportid 24: input=0, output=0, feature=2 uhid23 at uhidev0 reportid 25: input=0, output=0, feature=2 uhid24 at uhidev0 reportid 26: input=0, output=0, feature=2 uhid25 at uhidev0 reportid 27: input=0, output=0, feature=1 uhid26 at uhidev0 reportid 28: input=0, output=0, feature=1 uhid27 at uhidev0 reportid 29: input=0, output=0, feature=2 uhid28 at uhidev0 reportid 30: input=0, output=0, feature=2 uhid29 at uhidev0 reportid 31: input=0, output=0, feature=2 uhid30 at uhidev0 reportid 32: input=0, output=0, feature=4 uhid31 at uhidev0 reportid 33: input=0, output=0, feature=1 uhid32 at uhidev0 reportid 34: input=0, output=0, feature=1 uhid33 at uhidev0 reportid 35: input=0, output=0, feature=2 uhid34 at uhidev0 reportid 36: input=0, output=0, feature=2 uhid35 at uhidev0 reportid 37: input=0, output=0, feature=2 uhid36 at uhidev0 reportid 38: input=0, output=0, feature=2 uhid37 at uhidev0 reportid 39: input=0, output=0, feature=2 uhid38 at uhidev0 reportid 40: input=0, output=0, feature=2 uhid39 at uhidev0 reportid 41: input=0, output=0, feature=3 uhid40 at uhidev0 reportid 42: input=0, output=0, feature=2 uhid41 at uhidev0 reportid 43: input=0, output=0, feature=2 uhid42 at uhidev0 reportid 44: input=0, output=0, feature=2 uhid43 at uhidev0 reportid 45: input=0, output=0, feature=2 uhid44 at uhidev0 reportid 46: input=0, output=0, feature=1 uhid45 at uhidev0 reportid 47: input=0, output=0, feature=1 uhid46 at uhidev0 reportid 48: input=0, output=0, feature=1 uhid47 at uhidev0 reportid 49: input=0, output=0, feature=1 uhid48 at uhidev0 reportid 50: input=0, output=0, feature=1 uhid49 at uhidev0 reportid 51: input=2, output=0, feature=2 uhid50 at uhidev0 reportid 52: input=0, output=0, feature=1 uhid51 at uhidev0 reportid 53: input=0, output=0, feature=2 uhid52 at uhidev0 reportid 54: input=0, output=0, feature=1 uhid53 at uhidev0 reportid 55: input=0, output=0, feature=1 uhid54 at uhidev0 reportid 62: input=0, output=0, feature=4 uhid55 at uhidev0 reportid 63: input=0, output=0, feature=4 uhid56 at uhidev0 reportid 64: input=0, output=0, feature=1 uhid57 at uhidev0 reportid 65: input=0, output=0, feature=2 uhid58 at uhidev0 reportid 66: input=0, output=0, feature=1 uhid59 at uhidev0 reportid 69: input=0, output=0, feature=3 uhid60 at uhidev0 reportid 70: input=0, output=0, feature=1 uhid61 at uhidev0 reportid 71: input=0, output=0, feature=1 uhid62 at uhidev0 reportid 72: input=0, output=0, feature=4 uhid63 at uhidev0 reportid 81: input=0, output=0, feature=1 uhid64 at uhidev0 reportid 82: input=0, output=0, feature=2 uhid65 at uhidev0 reportid 96: input=0, output=0, feature=2 uhid66 at uhidev0 reportid 97: input=0, output=0, feature=1 uhid67 at uhidev0 reportid 98: input=0, output=0, feature=4 uhidev1 at uhub1 port 3 configuration 1 interface 0 "Cherry GmbH CHERRY Wired Keyboard" rev 2.00/1.20 addr 4 uhidev1: iclass 3/1 ukbd0 at uhidev1: 8 variable keys, 6 key codes wskbd0 at ukbd0: console keyboard, using wsdisplay0 uhidev2 at uhub1 port 3 configuration 1 interface 1 "Cherry GmbH CHERRY Wired Keyboard" rev 2.00/1.20 addr 4 uhidev2: iclass 3/0 ucc0 at uhidev2: 9 usages, 8 keys, enum wskbd1 at ucc0 mux 1 wskbd1: connecting to wsdisplay0 uhidev3 at uhub1 port 4 configuration 1 interface 0 "Logitech USB Optical Mouse" rev 2.00/43.01 addr 5 uhidev3: iclass 3/1 ums0 at uhidev3: 3 buttons, Z dir wsmouse0 at ums0 mux 0 umass0 at uhub0 port 3 configuration 1 interface 0 "ICY BOX IB-AC704-6G" rev 3.00/1.00 addr 6 umass0: using SCSI over Bulk-Only scsibus0 at umass0: 2 targets, initiator 0 sd0 at scsibus0 targ 1 lun 0: <ICY BOX, IB-AC704-6G, 0> serial.174c55aa201712000010 sd0: 953869MB, 512 bytes/sector, 1953525168 sectors vscsi0 at root scsibus1 at vscsi0: 256 targets softraid0 at root scsibus2 at softraid0: 256 targets root on sd0a (8c1699786972c1f6.a) swap on sd0b dump on sd0b WARNING: / was not properly unmounted WARNING: clock lost 150 days WARNING: CHECK AND RESET THE DATE! gpio0 at bcmgpio0: 58 pins bwfm0: address dc:a6:32:cc:db:a8 usbdevs: Controller /dev/usb0: addr 01: 1106:0000 VIA, xHCI root hub super speed, self powered, config 1, rev 1.00 driver: uhub0 addr 02: 2109:3431 VIA Labs, USB2.0 Hub high speed, self powered, config 1, rev 4.21 driver: uhub1 addr 03: 051d:0002 American Power Conversion, Back-UPS CS 650 FW:817.v9.I USB FW:v9 low speed, self powered, config 1, rev 0.06, iSerial 4B1814P12028 driver: uhidev0 addr 04: 046a:0113 Cherry GmbH, CHERRY Wired Keyboard low speed, power 100 mA, config 1, rev 1.20 driver: uhidev1 driver: uhidev2 addr 05: 046d:c018 Logitech, USB Optical Mouse low speed, power 100 mA, config 1, rev 43.01 driver: uhidev3 addr 06: 174c:55aa ICY BOX, IB-AC704-6G super speed, self powered, config 1, rev 1.00, iSerial 201712000010 driver: umass0