VirtualBox

Changeset 93251 in vbox


Ignore:
Timestamp:
Jan 15, 2022 3:20:12 AM (3 years ago)
Author:
vboxsync
Message:

/Config.kmk,Add,SupDrv: Enable control flow guards. bugref:10162

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Config.kmk

    r93250 r93251  
    50095009TEMPLATE_VBoxR0_CXXFLAGS           += -Gw
    50105010 endif
     5011 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     5012TEMPLATE_VBoxR0_CXXFLAGS           += -guard:cf
     5013 endif
    50115014 ifdef VBOX_WITH_MSC_ANALYZE_THIS
    50125015TEMPLATE_VBoxR0_CXXFLAGS           += /analyze
     
    50235026  TEMPLATE_VBoxR0_LDFLAGS          += -IntegrityCheck
    50245027 endif
     5028 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     5029TEMPLATE_VBoxR0_LDFLAGS            += -Guard:CF
     5030 endif
    50255031TEMPLATE_VBoxR0_LIBS                = \
    50265032        $(PATH_STAGE_LIB)/RuntimeR0Stub$(VBOX_SUFF_LIB)
     5033 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     5034TEMPLATE_VBoxR0_LIBS               += \
     5035        $(PATH_SDK_$(VBOX_WINDDK)_LIB)/BufferOverflowK.lib
     5036  include $(KBUILD_PATH)/sdks/$(VBOX_WINDDK).kmk ## TODO: Add a kBuild feature for loading SDKs.
     5037 endif
    50275038TEMPLATE_VBoxR0_SDKS.x86           += VBOX_WIN_INT64
    50285039TEMPLATE_VBoxR0_ORDERDEPS           = $(VBOX_SIGN_DRIVER_ORDERDEPS)
     
    51825193  TEMPLATE_VBOXR0DRV_CXXFLAGS         += -Gw
    51835194 endif
     5195 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     5196  TEMPLATE_VBOXR0DRV_CXXFLAGS         += -guard:cf
     5197 endif
    51845198 ifdef VBOX_WITH_MSC_ANALYZE_THIS
    51855199  TEMPLATE_VBOXR0DRV_CXXFLAGS         += /analyze
     
    51955209 ifdef VBOX_SIGNING_MODE
    51965210  TEMPLATE_VBOXR0DRV_LDFLAGS          += -IntegrityCheck
     5211 endif
     5212 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     5213  TEMPLATE_VBOXR0DRV_LDFLAGS          += -Guard:CF
    51975214 endif
    51985215 TEMPLATE_VBOXR0DRV_ORDERDEPS          = $(VBOX_SIGN_DRIVER_ORDERDEPS)
     
    57395756  TEMPLATE_VBOXR3EXE_CXXFLAGS         += -Gw
    57405757 endif
     5758 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     5759  TEMPLATE_VBOXR3EXE_CXXFLAGS         += -guard:cf
     5760 endif
    57415761 ifdef VBOX_WITH_MSC_ANALYZE_THIS
    57425762  TEMPLATE_VBOXR3EXE_CXXFLAGS         += /analyze
     
    57685788 if defined(VBOX_SIGNING_MODE) && defined(VBOX_WITH_HARDENING)
    57695789   TEMPLATE_VBOXR3EXE_LDFLAGS         += -IntegrityCheck
     5790 endif
     5791 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     5792  TEMPLATE_VBOXR3EXE_LDFLAGS          += -Guard:CF
    57705793 endif
    57715794
     
    67706793  TEMPLATE_VBOXMAINEXE_CXXFLAGS         += -Gw
    67716794 endif
     6795 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     6796  TEMPLATE_VBOXMAINEXE_CXXFLAGS         += -guard:cf
     6797 endif
    67726798 ifdef VBOX_WITH_MSC_ANALYZE_THIS
    67736799  TEMPLATE_VBOXMAINEXE_CXXFLAGS         += /analyze
     
    68026828 if defined(VBOX_SIGNING_MODE) && defined(VBOX_WITH_HARDENING)
    68036829  TEMPLATE_VBOXMAINEXE_LDFLAGS          += -IntegrityCheck
     6830 endif
     6831 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     6832  TEMPLATE_VBOXMAINEXE_LDFLAGS          += -Guard:CF
    68046833 endif
    68056834 ifdef VBOX_WITH_DTRACE_R3_MAIN
     
    74337462  TEMPLATE_VBOXQTGUIEXE_CXXFLAGS += -Gw
    74347463  endif
     7464  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     7465   TEMPLATE_VBOXR0DRV_CXXFLAGS += -guard:cf
     7466  endif
    74357467  ifdef VBOX_WITH_MSC_ANALYZE_THIS
    74367468   TEMPLATE_VBOXR0DRV_CXXFLAGS += /analyze
     
    74497481  if defined(VBOX_SIGNING_MODE) && defined(VBOX_WITH_HARDENING)
    74507482   TEMPLATE_VBOXQTGUIEXE_LDFLAGS += -IntegrityCheck
     7483  endif
     7484  if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     7485   TEMPLATE_VBOXQTGUIEXE_LDFLAGS += -Guard:CF
    74517486  endif
    74527487
     
    77157750  TEMPLATE_VBoxBldProg_CXXFLAGS         += -Gw
    77167751 endif
     7752 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     7753  TEMPLATE_VBoxBldProg_CXXFLAGS         += -guard:cf
     7754 endif
    77177755 ifdef VBOX_WITH_MSC_ANALYZE_THIS
    77187756  TEMPLATE_VBoxBldProg_CXXFLAGS         += /analyze
     
    77497787        /DISALLOWLIB:ucrt.lib \
    77507788        /DISALLOWLIB:ucrtd.lib
     7789 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     7790  TEMPLATE_VBoxBldProg_LDFLAGS           += -Guard:CF
     7791 endif
    77517792 if "$(VBOX_VCC_TOOL_STEM)" >= "VCC140"
    77527793  TEMPLATE_VBoxBldProg_LIBS               = \
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/Makefile.kmk

    r93115 r93251  
    7272        $(VBOX_LIB_IPRT_GUEST_R0_NT4) \
    7373        $(VBOX_PATH_ADDITIONS_LIB)/HGSMIGuestR0Lib$(VBOX_SUFF_LIB)
     74if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD) # Use the GDI variant here, see /Entry above.
     75 VBoxDisp_LIBS += \
     76        $(PATH_SDK_$(VBOX_WINDDK)_LIB.$(KBUILD_TARGET_ARCH))/BufferOverflowGDI.lib
     77endif
    7478VBoxDisp_USES.win += vboximportchecker
    7579VBoxDisp_VBOX_IMPORT_CHECKER.win.x86 = nt4/r0
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/Makefile.kmk

    r93115 r93251  
    6767VBoxVideo_LIBS.x86      = \
    6868        $(PATH_SDK_$(VBOX_WINDDK_GST_NT4)_LIB)/exsup.lib
     69if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD)
     70 VBoxVideo_LIBS += \
     71        $(PATH_SDK_$(VBOX_WINDDK)_LIB.$(KBUILD_TARGET_ARCH))/BufferOverflowK.lib
     72endif
    6973
    7074ifdef VBOX_WITH_WDDM
  • trunk/src/VBox/Additions/WINNT/SharedFolders/driver/Makefile.kmk

    r93115 r93251  
    5050        $(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/hal.lib \
    5151        $(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/ksecdd.lib \
    52         $(PATH_SDK_$(VBOX_WINDDK_GST_WLH)_LIB.$(KBUILD_TARGET_ARCH))/BufferOverflowK.lib \
     52        $(PATH_SDK_$($(if-expr "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD),VBOX_WINDDK,VBOX_WINDDK_GST_WLH))_LIB.$(KBUILD_TARGET_ARCH))/BufferOverflowK.lib \
    5353        \
    5454        $(VBOX_LIB_VBGL_R0) \
     
    7272        $(PATH_SDK_$(VBOX_WINDDK_GST_W2K3)_LIB.x86)/ksecdd.lib \
    7373        $(PATH_SDK_$(VBOX_WINDDK_GST_W2K3)_LIB.x86)/BufferOverflowK.lib \
     74        $(PATH_SDK_$($(if-expr "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" && !defined(VBOX_WITHOUT_CONTROL_FLOW_GUARD),VBOX_WINDDK,VBOX_WINDDK_GST_W2K3))_LIB.x86)/BufferOverflowK.lib \
    7475        \
    7576        $(VBOX_LIB_VBGL_R0) \
  • trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp

    r93115 r93251  
    26012601            &&  pNtHdrsIprt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress > sizeof(IMAGE_NT_HEADERS)
    26022602            &&  pNtHdrsIprt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress < pImage->cbImageBits
    2603             )
     2603            &&  pNtHdrsIprt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].Size >= sizeof(IMAGE_LOAD_CONFIG_DIRECTORY)
     2604            &&  pNtHdrsIprt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].VirtualAddress > sizeof(IMAGE_NT_HEADERS)
     2605            &&  pNtHdrsIprt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].VirtualAddress < pImage->cbImageBits)
    26042606        {
    26052607            SUPDRVNTEXCLREGIONS ExcludeRegions;
     
    26582660                pImp++;
    26592661            }
     2662
     2663            /* Exclude the security cookie if present. */
     2664            uint32_t const cbCfg  = pNtHdrsIprt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].Size;
     2665            uint32_t const offCfg = pNtHdrsIprt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].VirtualAddress;
     2666            IMAGE_LOAD_CONFIG_DIRECTORY const * const pCfg = (IMAGE_LOAD_CONFIG_DIRECTORY const *)&pbImageBits[offCfg];
     2667            if (   pCfg->Size >= RT_UOFFSET_AFTER(IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie)
     2668                && pCfg->SecurityCookie != NULL)
     2669                supdrvNtAddExclRegion(&ExcludeRegions, (uintptr_t)pCfg->SecurityCookie - (uintptr_t)pImage->pvImage, sizeof(void *));
    26602670
    26612671            /*
  • trunk/src/VBox/Runtime/nt/NtProcessStartup-stub.cpp

    r93115 r93251  
    3939}
    4040
     41
     42#ifdef IN_RING0
     43extern "C" long DriverEntry(void *pvDrvObjIgn, void *pvRegPathIgn)
     44{
     45    ASMBreakpoint();
     46    RT_NOREF(pvDrvObjIgn, pvRegPathIgn);
     47    return UINT32_C(0xc0000022);
     48}
     49#endif
     50
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette