aboutsummaryrefslogtreecommitdiffstats
path: root/include/hardening.mk
blob: 60f39428e83e92ec52e45a181686b58cbadec039 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#
# Copyright (C) 2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

PKG_CHECK_FORMAT_SECURITY ?= 1
PKG_ASLR_PIE ?= 1
PKG_SSP ?= 1
PKG_FORTIFY_SOURCE ?= 1
PKG_RELRO ?= 1

ifdef CONFIG_PKG_CHECK_FORMAT_SECURITY
  ifeq ($(strip $(PKG_CHECK_FORMAT_SECURITY)),1)
    TARGET_CFLAGS += -Wformat -Werror=format-security
  endif
endif
ifdef CONFIG_PKG_ASLR_PIE
  ifeq ($(strip $(PKG_ASLR_PIE)),1)
    TARGET_CFLAGS += $(FPIC)
    TARGET_LDFLAGS += $(FPIC) -specs=$(INCLUDE_DIR)/hardened-ld-pie.specs
  endif
endif
ifdef CONFIG_PKG_CC_STACKPROTECTOR_REGULAR
  ifeq ($(strip $(PKG_SSP)),1)
    TARGET_CFLAGS += -fstack-protector
  endif
endif
ifdef CONFIG_PKG_CC_STACKPROTECTOR_STRONG
  ifeq ($(strip $(PKG_SSP)),1)
    TARGET_CFLAGS += -fstack-protector-strong
  endif
endif
ifdef CONFIG_PKG_FORTIFY_SOURCE_1
  ifeq ($(strip $(PKG_FORTIFY_SOURCE)),1)
    TARGET_CFLAGS += -D_FORTIFY_SOURCE=1
  endif
endif
ifdef CONFIG_PKG_FORTIFY_SOURCE_2
  ifeq ($(strip $(PKG_FORTIFY_SOURCE)),1)
    TARGET_CFLAGS += -D_FORTIFY_SOURCE=2
  endif
endif
ifdef CONFIG_PKG_RELRO_PARTIAL
  ifeq ($(strip $(PKG_RELRO)),1)
    TARGET_CFLAGS += -Wl,-z,relro
    TARGET_LDFLAGS += -zrelro
  endif
endif
ifdef CONFIG_PKG_RELRO_FULL
  ifeq ($(strip $(PKG_RELRO)),1)
    TARGET_CFLAGS += -Wl,-z,now -Wl,-z,relro
    TARGET_LDFLAGS += -znow -zrelro
  endif
endif
ananapi-r64 define Device/bpi_bananapi-r64-rootdisk DEVICE_VENDOR := Bpi DEVICE_MODEL := Banana Pi R64 (rootdisk) DEVICE_DTS := mt7622-bananapi-bpi-r64-rootdisk DEVICE_DTS_DIR := ../dts SUPPORTED_DEVICES := bananapi,bpi-r64 DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 \ mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk IMAGES := sysupgrade-emmc.bin.gz IMAGE/sysupgrade-emmc.bin.gz := sysupgrade-emmc | gzip | append-metadata endef TARGET_DEVICES += bpi_bananapi-r64-rootdisk define Device/elecom_wrc-2533gent DEVICE_VENDOR := Elecom DEVICE_MODEL := WRC-2533GENT DEVICE_DTS := mt7622-elecom-wrc-2533gent DEVICE_DTS_DIR := ../dts DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-mt7615e \ kmod-mt7615-firmware kmod-btmtkuart swconfig endef TARGET_DEVICES += elecom_wrc-2533gent define Device/linksys_e8450 DEVICE_VENDOR := Linksys DEVICE_MODEL := E8450 DEVICE_ALT0_VENDOR := Belkin DEVICE_ALT0_MODEL := RT3200 DEVICE_DTS := mt7622-linksys-e8450 DEVICE_DTS_DIR := ../dts DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk \ kmod-mt7615e kmod-mt7615-firmware kmod-mt7915e endef TARGET_DEVICES += linksys_e8450 define Device/linksys_e8450-ubi DEVICE_VENDOR := Linksys DEVICE_MODEL := E8450 DEVICE_VARIANT := UBI DEVICE_ALT0_VENDOR := Belkin DEVICE_ALT0_MODEL := RT3200 DEVICE_ALT0_VARIANT := UBI DEVICE_DTS := mt7622-linksys-e8450-ubi DEVICE_DTS_DIR := ../dts UBINIZE_OPTS := -E 5 BLOCKSIZE := 128k PAGESIZE := 2048 UBOOTENV_IN_UBI := 1 KERNEL_IN_UBI := 1 KERNEL := kernel-bin | gzip # recovery can also be used with stock firmware web-ui, hence the padding... KERNEL_INITRAMFS := kernel-bin | lzma | \ fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 128k KERNEL_INITRAMFS_SUFFIX := -recovery.itb IMAGES := sysupgrade.itb IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk \ kmod-mt7615e kmod-mt7615-firmware kmod-mt7915e \ u-boot-mt7622_linksys_e8450 uboot-envtools ARTIFACTS := preloader.bin bl31-uboot.fip ARTIFACT/preloader.bin := bl2 snand-1ddr ARTIFACT/bl31-uboot.fip := bl31-uboot linksys_e8450 endef TARGET_DEVICES += linksys_e8450-ubi define Device/mediatek_mt7622-rfb1 DEVICE_VENDOR := MediaTek DEVICE_MODEL := MTK7622 rfb1 AP DEVICE_DTS := mt7622-rfb1 DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk endef TARGET_DEVICES += mediatek_mt7622-rfb1 define Device/mediatek_mt7622-ubi DEVICE_VENDOR := MediaTek DEVICE_MODEL := MTK7622 AP (UBI) DEVICE_DTS := mt7622-rfb1-ubi DEVICE_DTS_DIR := ../dts UBINIZE_OPTS := -E 5 BLOCKSIZE := 128k PAGESIZE := 2048 KERNEL_SIZE := 4194304 IMAGE_SIZE := 32768k IMAGES += factory.bin IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | \ check-size $$$$(IMAGE_SIZE) IMAGE/sysupgrade.bin := sysupgrade-tar DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk endef TARGET_DEVICES += mediatek_mt7622-ubi define Device/ubnt_unifi-6-lr DEVICE_VENDOR := Ubiquiti DEVICE_MODEL := UniFi 6 LR DEVICE_DTS := mt7622-ubnt-unifi-6-lr DEVICE_DTS_DIR := ../dts DEVICE_PACKAGES := kmod-mt7915e endef TARGET_DEVICES += ubnt_unifi-6-lr