etc.git


etc

~ scripts and random things
git clone https://github.com/djnnvx/etc.git
log | files | refs | archive

kernel.config (6588B)

      1 # Linux USB stack fuzzing VM — minimal kernel configuration fragment.
      2 #
      3 # Applied over `make allnoconfig` using:
      4 #   scripts/kconfig/merge_config.sh -m .config ../qemu/kernel.config
      5 #   make olddefconfig
      6 #
      7 # Targets: USB core/enumeration, USB gadget framework, host controller drivers.
      8 # Instrument with KASAN + UBSAN + KCOV for maximum crash visibility.
      9 # syzkaller uses KCOV for coverage feedback and KASAN to detect memory errors.
     10 
     11 # ── basic 64-bit SMP kernel ──────────────────────────────────────────────
     12 CONFIG_64BIT=y
     13 CONFIG_SMP=y
     14 CONFIG_NR_CPUS=4
     15 CONFIG_PREEMPT_NONE=y
     16 CONFIG_HZ_100=y
     17 
     18 # ── needed for kernel to function correctly ──────────────────────────────
     19 CONFIG_PRINTK=y
     20 CONFIG_BUG=y
     21 CONFIG_ELF_CORE=n
     22 CONFIG_FUTEX=y
     23 CONFIG_EPOLL=y
     24 CONFIG_SIGNALFD=y
     25 CONFIG_EVENTFD=y
     26 CONFIG_AIO=y
     27 CONFIG_ADVISE_SYSCALLS=y
     28 CONFIG_MEMFD_CREATE=y
     29 CONFIG_POSIX_TIMERS=y
     30 
     31 # ── memory ───────────────────────────────────────────────────────────────
     32 CONFIG_MEMORY_ISOLATION=n
     33 CONFIG_SLUB=y
     34 # KASAN requires slab merging disabled — merged slabs collapse redzone separation
     35 CONFIG_SLAB_MERGE_DEFAULT=n
     36 
     37 # ── networking ───────────────────────────────────────────────────────────
     38 CONFIG_NET=y
     39 CONFIG_INET=y
     40 CONFIG_PACKET=y
     41 CONFIG_UNIX=y
     42 CONFIG_IPV6=n
     43 CONFIG_TCP_CONG_CUBIC=y
     44 CONFIG_DEFAULT_TCP_CONG="cubic"
     45 CONFIG_NETFILTER=n
     46 CONFIG_NET_SCHED=n
     47 
     48 # ── network device drivers ───────────────────────────────────────────────
     49 CONFIG_NETDEVICES=y
     50 CONFIG_ETHERNET=y
     51 CONFIG_NET_VENDOR_INTEL=y
     52 CONFIG_E1000=y
     53 CONFIG_VIRTIO_NET=y
     54 
     55 # ── PCI (needed for e1000 and USB host controllers) ──────────────────────
     56 CONFIG_PCI=y
     57 CONFIG_PCIEPORTBUS=y
     58 
     59 # ── USB core ─────────────────────────────────────────────────────────────
     60 CONFIG_USB_SUPPORT=y
     61 CONFIG_USB=y
     62 CONFIG_USB_PCI=y
     63 CONFIG_USB_HCD_TEST_MODE=n
     64 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
     65 
     66 # ── USB host controllers (xHCI + EHCI exercised by dummy_hcd enumeration) ─
     67 CONFIG_USB_XHCI_HCD=y
     68 CONFIG_USB_XHCI_PCI=y
     69 CONFIG_USB_EHCI_HCD=y
     70 CONFIG_USB_EHCI_PCI=y
     71 CONFIG_USB_OHCI_HCD=y
     72 CONFIG_USB_OHCI_HCD_PCI=y
     73 
     74 # ── raw_gadget + dummy_hcd — the core of syz_usb_connect fuzzing ─────────
     75 #
     76 # dummy_hcd acts as both a USB host controller and a USB device controller
     77 # simultaneously. raw_gadget exposes the device side to userspace, so
     78 # syzkaller can present arbitrary USB descriptors to the kernel's USB core.
     79 #
     80 # Attack flow: syzkaller writes crafted descriptors via raw_gadget →
     81 #   USB core parses them (CONFIG_USB) → host controller driver handles URBs
     82 #   (CONFIG_USB_XHCI_HCD etc.) → class drivers bind (HID, storage, etc.)
     83 CONFIG_USB_GADGET=y
     84 CONFIG_USB_DUMMY_HCD=y
     85 CONFIG_USB_RAW_GADGET=y
     86 
     87 # ── USB gadget framework (configfs interface) ────────────────────────────
     88 # Exercised by syzkaller-gadget-fw profile: mkdir/write on configfs paths.
     89 CONFIG_CONFIGFS_FS=y
     90 CONFIG_USB_CONFIGFS=y
     91 CONFIG_USB_CONFIGFS_SERIAL=y
     92 CONFIG_USB_CONFIGFS_ACM=y
     93 CONFIG_USB_CONFIGFS_NCM=y
     94 CONFIG_USB_CONFIGFS_MASS_STORAGE=y
     95 CONFIG_USB_CONFIGFS_F_HID=y
     96 CONFIG_USB_CONFIGFS_F_UVC=y
     97 
     98 # ── USB class drivers (bind when fake device enumerates via dummy_hcd) ───
     99 CONFIG_USB_HID=y
    100 CONFIG_HID=y
    101 CONFIG_HID_GENERIC=y
    102 CONFIG_USB_HIDDEV=y
    103 CONFIG_USB_STORAGE=y
    104 CONFIG_USB_ACM=y
    105 CONFIG_USB_SERIAL=y
    106 CONFIG_USB_SERIAL_GENERIC=y
    107 
    108 # ── modules ──────────────────────────────────────────────────────────────
    109 CONFIG_MODULES=y
    110 CONFIG_MODULE_UNLOAD=y
    111 CONFIG_MODULE_FORCE_UNLOAD=n
    112 
    113 # ── filesystem / initramfs ───────────────────────────────────────────────
    114 CONFIG_TMPFS=y
    115 CONFIG_PROC_FS=y
    116 CONFIG_PROC_SYSCTL=y
    117 CONFIG_SYSFS=y
    118 CONFIG_DEVTMPFS=y
    119 CONFIG_DEVTMPFS_MOUNT=y
    120 CONFIG_BLK_DEV_INITRD=y
    121 CONFIG_RD_GZIP=y
    122 CONFIG_INITRAMFS_SOURCE=""
    123 
    124 # ── TTY / serial console ─────────────────────────────────────────────────
    125 CONFIG_TTY=y
    126 CONFIG_VT=n
    127 CONFIG_SERIAL_8250=y
    128 CONFIG_SERIAL_8250_CONSOLE=y
    129 CONFIG_SERIAL_8250_NR_UARTS=4
    130 
    131 # ── clock / timers ───────────────────────────────────────────────────────
    132 CONFIG_RTC_CLASS=y
    133 CONFIG_HW_RANDOM=y
    134 
    135 # ── namespaces (syzkaller sandbox support) ───────────────────────────────
    136 CONFIG_NAMESPACES=y
    137 CONFIG_UTS_NS=y
    138 CONFIG_IPC_NS=y
    139 CONFIG_PID_NS=y
    140 CONFIG_NET_NS=y
    141 CONFIG_USER_NS=y
    142 CONFIG_CGROUPS=y
    143 
    144 # ── disable as much as possible for fast boot ────────────────────────────
    145 CONFIG_ACPI=n
    146 CONFIG_ACPI_SLEEP=n
    147 CONFIG_HIBERNATION=n
    148 CONFIG_SUSPEND=n
    149 CONFIG_PM=n
    150 CONFIG_SOUND=n
    151 CONFIG_DRM=n
    152 CONFIG_FB=n
    153 CONFIG_FRAMEBUFFER_CONSOLE=n
    154 CONFIG_INPUT=n
    155 CONFIG_SERIO=n
    156 CONFIG_WIRELESS=n
    157 CONFIG_RFKILL=n
    158 CONFIG_CRYPTO_HW=n
    159 
    160 # ── sanitizers (KASAN, KCOV, UBSAN) ─────────────────────────────────────
    161 # KASAN: catches heap overflows, UAF, OOB reads.
    162 # Overhead: ~2x slowdown, 8x extra RAM. Use -m 2048M in QEMU.
    163 CONFIG_KASAN=y
    164 CONFIG_KASAN_GENERIC=y
    165 CONFIG_KASAN_OUTLINE=y
    166 CONFIG_KASAN_TAGS=n
    167 
    168 # UBSAN: catches undefined behaviour (integer overflow, OOB, etc.)
    169 CONFIG_UBSAN=y
    170 CONFIG_UBSAN_BOUNDS=y
    171 CONFIG_UBSAN_SANITIZE_ALL=y
    172 
    173 CONFIG_DEBUG_LIST=y
    174 
    175 # KCOV: syzkaller's coverage feedback mechanism.
    176 # syzkaller reads /sys/kernel/debug/kcov per-task to guide mutation.
    177 CONFIG_KCOV=y
    178 CONFIG_KCOV_ENABLE_COMPARISONS=y
    179 CONFIG_KCOV_INSTRUMENT_ALL=y
    180 
    181 CONFIG_DEBUG_FS=y
    182 CONFIG_PANIC_ON_OOPS=y
    183 
    184 CONFIG_CC_OPTIMIZE_FOR_SIZE=n
    185 CONFIG_KERNEL_XZ=n
    186 CONFIG_KERNEL_GZIP=y