From 837d202a5c36a9938b2a15020431987f4005ad95 Mon Sep 17 00:00:00 2001 From: Yarden Shafir Date: Mon, 13 Jan 2020 00:44:53 +0200 Subject: [PATCH] Reorganize and add useful functions. --- Xpolicy/Xpolicy.vcxproj | 3 + Xpolicy/bin/Xpolicy32.exe | Bin 0 -> 41984 bytes Xpolicy/bin/Xpolicy32.pdb | Bin 0 -> 438272 bytes Xpolicy/bin/Xpolicy64.exe | Bin 0 -> 63488 bytes Xpolicy/bin/Xpolicy64.pdb | Bin 0 -> 430080 bytes src/KeVerifyContextIpForUserCet.c | 46 ++++++ src/KeVerifyContextRecord.c | 69 +++++++++ src/KeVerifyContextXStateCetU.c | 78 ++++++++++ src/KiVerifyContextIpForUserCet.c | 100 +++++++++++++ src/KiVerifyContextRecord.c | 51 +++++++ src/KiVerifyContextXStateCetUEnabled.c | 60 ++++++++ src/NtSetInformationProcess.c | 191 +++++++++++++++++++++++++ src/RtlVerifyUserUnwindTarget.c | 184 ++++++++++++++++++++++++ src/RtlpTargetCompare.c | 14 ++ 14 files changed, 796 insertions(+) create mode 100644 Xpolicy/bin/Xpolicy32.exe create mode 100644 Xpolicy/bin/Xpolicy32.pdb create mode 100644 Xpolicy/bin/Xpolicy64.exe create mode 100644 Xpolicy/bin/Xpolicy64.pdb create mode 100644 src/KeVerifyContextIpForUserCet.c create mode 100644 src/KeVerifyContextRecord.c create mode 100644 src/KeVerifyContextXStateCetU.c create mode 100644 src/KiVerifyContextIpForUserCet.c create mode 100644 src/KiVerifyContextRecord.c create mode 100644 src/KiVerifyContextXStateCetUEnabled.c create mode 100644 src/NtSetInformationProcess.c create mode 100644 src/RtlVerifyUserUnwindTarget.c create mode 100644 src/RtlpTargetCompare.c diff --git a/Xpolicy/Xpolicy.vcxproj b/Xpolicy/Xpolicy.vcxproj index 9dbfa2d..55fd186 100644 --- a/Xpolicy/Xpolicy.vcxproj +++ b/Xpolicy/Xpolicy.vcxproj @@ -77,6 +77,9 @@ true true + + "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\lib\x86" + diff --git a/Xpolicy/bin/Xpolicy32.exe b/Xpolicy/bin/Xpolicy32.exe new file mode 100644 index 0000000000000000000000000000000000000000..732ee60c1d79a86a4932c075007fcf6165e0d449 GIT binary patch literal 41984 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 Od!A2V;`7g-f&UAVPtDc< literal 0 HcmV?d00001 diff --git a/Xpolicy/bin/Xpolicy32.pdb b/Xpolicy/bin/Xpolicy32.pdb new file mode 100644 index 0000000000000000000000000000000000000000..bde07025e6ff9c20db55d64a901ae92a42e8cbd4 GIT binary patch literal 438272 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 literal 0 HcmV?d00001 diff --git a/Xpolicy/bin/Xpolicy64.pdb b/Xpolicy/bin/Xpolicy64.pdb new file mode 100644 index 0000000000000000000000000000000000000000..ee2a68b60ce939caed34945ed56d890808573d31 GIT binary patch literal 430080 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

H6h_)v|-chh7K(pp5E+O@!W;AOzK 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 z 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.CetShadowStack) + { + return STATUS_SUCCESS; + } + + // + // No need to do anything if UserCetSetContextIpValidation is not + // set in this process or if Rip is not being modified + // + process = Thread->Tcb.ApcState.Process; + if (!(process->MitigationFlags2Values.UserCetSetContextIpValidation) || + !(BooleanFlagOn(Context->ContextFlags, CONTEXT_CONTROL))) + { + return STATUS_SUCCESS; + } + + // + // Verify the new Rip target + // + status = KiVerifyContextIpForUserCet(Thread, Context, ContinueType, ShadowStack); + + // + // Audit failure if requested and fake success + // + if ((status == STATUS_SET_CONTEXT_DENIED) && + (process->MitigationFlags2Values.AuditUserCetSetContextIpValidation)) + { + KiLogUserCetSetContextIpValidationAudit(*ContinueType); + status = STATUS_SUCCESS; + } + return status; +} \ No newline at end of file diff --git a/src/KeVerifyContextRecord.c b/src/KeVerifyContextRecord.c new file mode 100644 index 0000000..df27a6c --- /dev/null +++ b/src/KeVerifyContextRecord.c @@ -0,0 +1,69 @@ +NTSTATUS +KeVerifyContextRecord ( + _In_ PKTHREAD TargetThread, + _In_ PCONTEXT ContextFrame + _In_ PKCONTINUE_ARGUMENT ContinueArgument, + _Outptr_ PULONG_PTR ShadowStack + ) +{ + PKPROCESS targetProcess; + ULONG_PTR userStack; + PTEB userTeb; + PEWOW64PROCESS wow64Process; + USHORT wowMachine; + + targetProcess = TargetThread->Process; + if (targetProcess->CheckStackExtents != FALSE) + { + if (BooleanFlagOn(ContextFrame->ContextFlags, CONTEXT_CONTROL)) + { + userStack = ContextFrame->Rsp; + userTeb = TargetThread->Teb; + + // + // Get the stack limits from the process' TEB and + // check if the new stack pointer is inside the native stack + // + if (!RtlGuardIsValidStackPointer(userStack, userTeb)) + { + // + // New stack pointer is not inside the native stack. + // Check if this is a wow64 process, and if it is + // check if the new stack pointer is inside the wow64 stack. + // + wowMachine = PsWow64GetProcessMachine(targetProcess); + if ((wowMachine != IMAGE_FILE_MACHINE_I386) && + (wowMachine != IMAGE_FILE_MACHINE_ARMNT)) + { + return STATUS_INVALID_PARAMETER; + } + + if ((userStack >= (_4GB - 1)) || + !(RtlGuardIsValidWow64StackPointer(userStack, userTeb))) + { + return STATUS_INVALID_PARAMETER; + } + + // + // Call KiVerifyContextRecord to validate the new values of CS and RIP + // + status = KiVerifyContextRecord(TargetThread, + ContextFrame, + ContinueArgument, + ShadowStack); + } + } + } + + // + // If this is a non-wow64 process trying to set its CS to something + // other than KGDT64_R3_CODE, force it to be KGDT64_R3_CODE. + // + if ((BooleanFlagOn(ContextFrame->ContextFlags, CONTEXT_CONTROL)) && + (PsWow64GetProcessMachine(targetProcess) != IMAGE_FILE_MACHINE_I386)) + { + ContextFrame->SegCs = KGDT64_R3_CODE | RPL_MASK; + } + + return STATUS_SUCCESS; +} \ No newline at end of file diff --git a/src/KeVerifyContextXStateCetU.c b/src/KeVerifyContextXStateCetU.c new file mode 100644 index 0000000..fbffc85 --- /dev/null +++ b/src/KeVerifyContextXStateCetU.c @@ -0,0 +1,78 @@ +NTSTATUS +KeVerifyContextXStateCetU ( + _In_ PKTHREAD Thread, + _In_ PCONTEXT ContextRecord, + _Outptr_ PULONG_PTR ShadowStack + ) +{ + PXSAVE_CET_U_FORMAT cetData; + PXSAVE_AREA_HEADER xsaveData; + NTSTATUS status; + + if (!BooleanFlagOn(Context->Context.ContextFlags, CONTEXT_XSTATE)) + { + return STATUS_SUCCESS; + } + + // + // Get the address of the CET state from the supplied context + // + cetData = (PXSAVE_CET_U_FORMAT)RtlLocateExtendedFeature2((PCONTEXT_EX)(Context + 1), + XSTATE_CET_U, + &SharedUserData.XState, + NULL); + if (cetData == NULL) + { + return STATUS_SUCCESS; + } + + *ShadowStack = __readmsr(MSR_IA32_PL3_SSP); + + // + // Check if the context contains values for CET registers. + // If it doesn't, it means CET registers will not be set, and + // will disable CET if it was previously enabled. + // + xsaveData = (PXSAVE_AREA_HEADER)RTL_CONTEXT_CHUNK(Context, XState); + + if (Thread->CetUserShadowStack != FALSE) + { + if (!BooleanFlagOn(xsaveData->Mask, XSTATE_MASK_CET_U)) + { + // + // If the thread has CET enabled but the new context doesn't have + // CET registers in it, set the CET registers in the context to + // the current CET values. + // + SetFlag(xsaveData->Mask, XSTATE_MASK_CET_U); + cetData->Ia32CetUMsr = MSR_IA32_CET_SHSTK_EN; + cetData->Ia32Pl3SspMsr = *ShadowStack; + return STATUS_SUCCESS; + } + + // + // Verify that the new Ssp value is inside the shadow stack + // + status = KiVerifyContextXStateCetUEnabled(cetData, *ShadowStack); + if (NT_SUCCESS(status)) + { + return STATUS_SUCCESS; + } + + return status; + } + + // + // If the thread doesn't have CET enabled and the new context doesn't + // have CET registers, or the CET mask is set but the CET registers + // don't hold any value, allow because the CET state will not change. + // + if (!(BooleanFlagOn(xsaveData->Mask, XSTATE_MASK_CET_U)) || + ((cetData->Ia32CetUMsr == 0) && + (cetData->Ia32Pl3SspMsr == NULL))) + { + return STATUS_SUCCESS; + } + + return STATUS_SET_CONTEXT_DENIED; +} \ No newline at end of file diff --git a/src/KiVerifyContextIpForUserCet.c b/src/KiVerifyContextIpForUserCet.c new file mode 100644 index 0000000..d5a5431 --- /dev/null +++ b/src/KiVerifyContextIpForUserCet.c @@ -0,0 +1,100 @@ +NTSTATUS +KiVerifyContextIpForUserCet ( + _In_ PETHREAD Thread, + _In_ PCONTEXT Context, + _In_ PKCONTINUE_TYPE ContinueType, + _Inout_ PULONG_PTR ShadowStack + ) +{ + ULONG64 userRip; + PKSTACK_CONTROL stackControl; + ULONG_PTR shadowStack; + KCONTINUE_TYPE continueType; + PKTRAP_FRAME trapFrame; + + // + // Deny if the target Rip a kernel address or below 0x10000 + // + userRip = Context->Rip; + if ((userRip >= MM_USER_PROBE_ADDRESS) || + (userRip < MM_ALLOCATION_GRANULARITY)) + { + return STATUS_SET_CONTEXT_DENIED; + } + + // + // Ignore if target Rip is the previous address in user space + // (such as the initial thread start address) + // + trapFrame = PspGetBaseTrapFrame(Thread); + if (userRip == trapFrame->Rip) + { + return STATUS_SUCCESS; + } + + // + // Handle Rip validation for each KCONTINUE_TYPE + // + shadowStack = *ShadowStack; + continueType = *ContinueType; + switch (continueType) + { + case KCONTINUE_UNWIND: + case KCONTINUE_RESUME: + case KCONTINUE_SET: + + // + // Get address of shadow stack if one was not provided by caller. + // If no shadow stack exists, allow any Rip. + // + if (shadowStack == NULL) + { + shadowStack = __readmsr(MSR_IA32_PL3_SSP); + if (shadowStack == NULL) + { + return STATUS_SUCCESS; + } + } + + // + // Iterate over shadow stack and check if target Rip is in it. + // If thread is terminating, only try to find the target Rip + // in the current page of the shadow stack. + // + __try + { + do + { + shadowStack += sizeof(userRip); + if (*shadowStack == userRip) + { + *ShadowStack = shadowStack + sizeof(userRip); + return STATUS_SUCCESS; + } + } while (!(PAGE_ALIGNED(shadowStack)) || !(Thread->Terminated)); + + return STATUS_THREAD_IS_TERMINATING; + } + // + // If target Rip was not found and this is an unwind, try to verify + // Rip in the exception table unwind. + // + __except (EXCEPTION_EXECUTE_HANDLER) + { + if (continueType == KCONTINUE_UNWIND) + { + return RtlVerifyUserUnwindTarget(userRip, KCONTINUE_UNWIND); + } + + return STATUS_SET_CONTEXT_DENIED; + } + // + // If this is a long jump, try to verify Rip in the longjmp table. + // + case KCONTINUE_LONGJUMP: + return RtlVerifyUserUnwindTarget(userRip, KCONTINUE_LONGJUMP); + + default: + return STATUS_INVALID_PARAMETER; + } +} \ No newline at end of file diff --git a/src/KiVerifyContextRecord.c b/src/KiVerifyContextRecord.c new file mode 100644 index 0000000..f95a347 --- /dev/null +++ b/src/KiVerifyContextRecord.c @@ -0,0 +1,51 @@ +NTSTATUS +KiVerifyContextRecord ( + _In_ PKTHREAD TargetThread, + _In_ PCONTEXT ContextFrame + _In_ PKCONTINUE_ARGUMENT ContinueArgument, + _Outptr_ PULONG_PTR ShadowStack + ) +{ + PKPROCESS process; + + process = Thread->Tcb.Process; + + if (!BooleanFlagOn(ContextFrame->ContextFlags, CONTEXT_CONTROL)) + { + return STATUS_SUCCESS; + } + + // + // If this is a non-wow64 process trying to set CS to a value other than KGDT64_R3_CODE, + // Or this is a pico process trying to set CS to a value other than KGDT64_R3_CODE or + // KGDT64_R3_CMCODE, Force CS to be KGDT64_R3_CODE. + // + if ((PsWow64GetProcessMachine(process) != IMAGE_FILE_MACHINE_I386) && + ((process->PicoContext == NULL) || + (ContextFrame->SegCs != (KGDT64_R3_CMCODE | RPL_MASK)))) + { + ContextFrame->SegCs = KGDT64_R3_CODE | RPL_MASK; + } + + // + // New context structure is not supported + // + if (!ARGUMENT_PRESENT(ContinueArgument)) + { + return STATUS_SUCCESS; + } + + // + // Verify new RIP value in the shadow stack + // + status = KeVerifyContextIpForUserCet(TargetThread, + ContextFrame, + ContinueArgument, + ShadowStack); + if (NT_SUCCESS(status)) + { + return STATUS_SUCCESS; + } + + return status; +} \ No newline at end of file diff --git a/src/KiVerifyContextXStateCetUEnabled.c b/src/KiVerifyContextXStateCetUEnabled.c new file mode 100644 index 0000000..35ebc27 --- /dev/null +++ b/src/KiVerifyContextXStateCetUEnabled.c @@ -0,0 +1,60 @@ +NTSTATUS +KiVerifyContextXStateCetUEnabled ( + _In_ PXSAVE_CET_U_FORMAT CetData, + _In_ ULONG_PTR ShadowStack + ) +{ + MEMORY_REGION_INFORMATION regionInfo; + ULONG_PTR shadowStackEnd; + ULONG_PTR newShadowStack; + + // + // If the value for the MSR mask is not 1 (CET enabled), deny the new context + // + if (CetData->Ia32CetUMsr != MSR_IA32_CET_SHSTK_EN) + { + return STATUS_SET_CONTEXT_DENIED; + } + + // + // Deny the context if the new Ssp value is not 8-byte aligned + // + newShadowStack = CetData->Ia32Pl3SspMsr; + if ((newShadowStack & 7) != 0) + { + return STATUS_SET_CONTEXT_DENIED; + } + + // + // Check if the new Ssp is lower than the current Ssp, + // so it will point to uninitialized memory + // + if (newShadowStack < ShadowStack) + { + return STATUS_SET_CONTEXT_DENIED; + } + + // + // Get the end address of the shadow stack + // + ZwQueryVirtualMemory(NtCurrentProcess(), + ShadowStack, + MemoryRegionInformation, + ®ionInfo, + sizeof(regionInfo), + NULL); + shadowStackEnd = MemoryInformation.AllocationBase + + MemoryInformation.RegionSize - + PAGE_SIZE; + + // + // Check if the new Ssp is higher than the end address of + // the shadiw stack, so outside the stack bounds + // + if (newShadowStack >= shadowStackEnd) + { + return STATUS_SET_CONTEXT_DENIED; + } + + return STATUS_SUCCESS; +} \ No newline at end of file diff --git a/src/NtSetInformationProcess.c b/src/NtSetInformationProcess.c new file mode 100644 index 0000000..1e32dab --- /dev/null +++ b/src/NtSetInformationProcess.c @@ -0,0 +1,191 @@ +NTSTATUS +NTAPI +NtSetInformationProcess ( + _In_ HANDLE ProcessHandle, + _In_ PROCESSINFOCLASS ProcessInformationClass, + _In_ PVOID ProcessInformation, + _In_ ULONG ProcessInformationLength + ) +{ + PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION targetInfo; + ULONG targetsSize; + PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET targetsArray; + PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET ehTargets; + PEPROCESS targetProcess; + NTSTATUS status; + KPROCESSOR_MODE previousMode = ExGetPreviousMode(); + ULONG i; + ULONG targetsProcessed; + + // + // Handle the dynamic exception handlers information class + // + if (ProcessInformationClass == ProcessDynamicEHContinuationTargets) + { + // + // Validate the data is the right size + // + if (ProcessInformationLength != sizeof(targetInfo)) + { + return STATUS_INFO_LENGTH_MISMATCH; + } + + // + // Make a local copy of the data to avoid races + // + __try + { + targetInfo = *(PPROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION)ProcessInformation; + } + __except (EXCEPTION_EXECUTE_HANDLER) + { + return GetExceptionCode(); + } + + // + // Check how many targets there are + // + targetsSize = sizeof(PROCESS_DYNAMIC_EH_CONTINUATION_TARGET) * + targetInfo.NumberOfTargets; + if (targetsSize == 0) + { + return STATUS_INVALID_PARAMETER; + } + + // + // Make sure there are targets + // + targetsArray = targetInfo.Targets; + if (targetsArray == NULL) + { + return STATUS_INVALID_PARAMETER; + } + + // + // Probe that the targets are all in writeable UM memory + // + __try + { + ProbeForWrite(targetsArray, targetsSize, 8); + } + __except (EXCEPTION_EXECUTE_HANDLER) + { + return GetExceptionCode(); + } + + // + // These fields aren't used yet + // + if ((targetInfo.Reserved != 0) || (targetInfo.Reserved2 != 0)) + { + return STATUS_INVALID_PARAMETER; + } + + // + // Only user-mode code should be setting dynamic EH targets + // + if (previousMode != UserMode) + { + return STATUS_ACCESS_DENIED; + } + + // + // Make sure the caller has a full process write handle to the target + // + targetProcess = NULL; + status = ObReferenceObjectByHandle(ProcessHandle, + GENERIC_WRITE & ~SYNCHRONIZE, + (POBJECT_TYPE)PsProcessType, + UserMode, + (PVOID*)&targetProcess, + NULL); + if (!NT_SUCCESS(status)) + { + goto Cleanup; + } + + // + // Don't allow the current process to add targets to itself + // + if (targetProcess == PsGetCurrentProcess()) + { + status = STATUS_ACCESS_DENIED; + goto Cleanup; + } + + // + // Don't allow setting EH handlers if the target process doesn't have CET + // + if (targetProcess->MitigationFlags2Values.CetUserShadowStacks == FALSE) + { + status = STATUS_NOT_SUPPORTED; + goto Cleanup; + } + + // + // Allocate a kernel copy of the targets + // + ehTargets = ExAllocatePoolWithQuotaTag(PagedPool | + POOL_QUOTA_FAIL_INSTEAD_OF_RAISE, + targetsSize, + 'NHED'); + if (ehTargets == NULL) + { + status = STATUS_NO_MEMORY; + goto Cleanup; + } + + // + // Copy them in the array + // + RtlCopyMemory(ehTargets, targetsArray, targetsSize); + + // + // Process each target in the array + // + targetsProcessed = 0; + status = PspProcessDynamicEHContinuationTargets(targetProcess, + ehTargets, + targetInfo.NumberOfTargets, + &targetsProcessed); + + // + // Write out the flags back in the original user buffer, which will + // basically fill set DYNAMIC_EH_CONTINUATION_TARGET_PROCESSED so the + // caller knows what wasn't processed + // + __try + { + for (i = 0; i < targetsProcessed; i++) + { + targetsArray[i].Flags = ehTargets[i].Flags; + } + } + __except (EXCEPTION_EXECUTE_HANDLER) + { + status = GetExceptionCode(); + } + + Cleanup: + // + // Dereference the target process if needed + // + if (targetProcess != NULL) + { + ObDereferenceObject(targetProcess); + } + + // + // Free the EH target array if needed + // + if (ehTargets != NULL) + { + ExFreePoolWithTag(ehTargets, 'NHED'); + } + } + + // + // Return back to caller + // + return status; +} \ No newline at end of file diff --git a/src/RtlVerifyUserUnwindTarget.c b/src/RtlVerifyUserUnwindTarget.c new file mode 100644 index 0000000..ee16cba --- /dev/null +++ b/src/RtlVerifyUserUnwindTarget.c @@ -0,0 +1,184 @@ +NTSTATUS +RtlVerifyUserUnwindTarget ( + _In_ PVOID TargetRip, + _In_ KCONTINUE_TYPE ContinueType + ) +{ + PIMAGE_LOAD_CONFIG_DIRECTORY64 loadConfig; + INVERTED_FUNCTION_TABLE_ENTRY userFunctionTable; + ULONGLONG imageSize; + NTSTATUS status; + ULONG guardFlags; + SIZE_T configSize; + PVOID table; + ULONGLONG count; + ULONG rva; + SIZE_T metaSize; + BOOLEAN found; + PVOID entry; + // + // First, do a quick lookup in the user function table, which should almost always work + // + found = RtlpLookupUserFunctionTableInverted(TargetRip, &userFunctionTable); + if (found == FALSE) + { + // + // This module might not have any exception/unwind data, so do a slow VAD lookup instead + // + status = MmGetImageBase(TargetRip, &userFunctionTable.ImageBase, &imageSize); + if (!NT_SUCCESS(status)) + { + // + // There does not appear to be a valid module loaded at this address. + // The only other possibility is that this is JIT, which we'll handle at the end. + // + userFunctionTable.ImageBase = NULL; + } + else + { + // + // The VAD lookup can theoretically return a >= 4GB-sized module. This is not expected + // and not supported for actual PE images. + // + if (imageSize >= MAXULONG) + { + return STATUS_INTEGER_OVERFLOW; + } + // + // To simplify the code, capture the size in the same structure that the user function + // table lookup would've returned. + // + userFunctionTable.SizeOfImage = (ULONG)imageSize; + } + } + // + // Did we find a loaded module at this address? + // + if (userFunctionTable.ImageBase != NULL) + { + // + // We're going to touch user-mode data, so enter an exception handler context + // + __try + { + // + // Kind of an arbitrary probe of 64 bytes, since the call below will call + // RtlImageNtHeaderEx which does a proper probe of the whole header already. + // + ProbeForRead(userFunctionTable.ImageBase, 64, 1); + // + // Get the Image Load Config Directory. Note that this is a user-mode pointer + // + loadConfig = LdrImageDirectoryEntryToLoadConfig(userFunctionTable.ImageBase); + // + // For longjmp, use the longjump table, otherwise, for unwind, use the dynamic + // exception handler continuation table. + // + if (ContinueType == KCONTINUE_LONGJUMP) + { + guardFlags = IMAGE_GUARD_CF_LONGJUMP_TABLE_PRESENT; + configSize = FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY64, DynamicValueRelocTable); + } + else + { + guardFlags = IMAGE_GUARD_EH_CONTINUATION_TABLE_PRESENT; + configSize = sizeof(IMAGE_LOAD_CONFIG_DIRECTORY64); + } + // + // Probe the configuration directory, as LdrImageDirectoryEntryToLoadConfig only + // probes the first 4 bytes to account for the "Size" field. + // + // This probe will also raise if loadConfig is NULL (unless this is NTVDM on 32-bit). + // + ProbeForRead(loadConfig, configSize, 1); + // + // Make sure there's a load configuration directory, that it's large enough to have + // one of the two tables we care about, and that the guard flags indicate that the + // table we care about is actually present. + // + if ((loadConfig == NULL) || + (loadConfig->Size < configSize) || + !(guardFlags & loadConfig->GuardFlags)) + { + // + // We return success here, because this means that the binary is not compatible + // with CET. As such, for compatibility, allow this jump target. + // + return STATUS_SUCCESS; + } + } + __except (EXCEPTION_EXECUTE_HANDLER) + { + // + // Something's wrong with the user address space, bail out + // + return GetExceptionCode(); + } + // + // Use the correct table and count (longjmp vs. unwind) + // + if (ContinueType == KCONTINUE_LONGJUMP) + { + table = (PVOID)loadConfig->GuardLongJumpTargetTable; + count = loadConfig->GuardLongJumpTargetCount; + } + else + { + table = (PVOID)loadConfig->GuardEHContinuationTable; + count = loadConfig->GuardEHContinuationCount; + } + // + // More than 4 billion entries are not allowed + // + if (count >= MAXULONG) + { + return STATUS_INTEGER_OVERFLOW; + } + // + // If the table is empty, then there can't be any valid targets in this image... + // + if (count != 0) + { + // + // PE Images are always <= 4GB, so compute the 32-bit RVA + // + rva = (ULONG)((ULONG_PTR)TargetRip - (ULONG_PTR)userFunctionTable.ImageBase); + // + // The guard tables can have n-bytes of metadata, indicated by the upper nibble + // + metaSize = loadConfig->GuardFlags >> IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_SHIFT; + // + // Search through the guard table for this RVA + // + entry = bsearch_s(&rva, table, count, metaSize + sizeof(rva), RtlpTargetCompare, NULL); + if (entry != NULL) + { + // + // The entry was found, so this is a valid target + // + return STATUS_SUCCESS; + } + } + } + // + // Either there's no valid image mapped at this address, or there is, but its relevant guard + // table does not contain the target RIP requested (as a reminder, if there's no table, then + // the target _is_ allowed, for compatibility reasons). + // + // In this case, for exception unwinding (and obviously not longjmp), check if there is a + // JIT-ted (dynamic) exception handler continuation target registered at this target. + // + if (ContinueType == KCONTINUE_UNWIND) + { + found = RtlpFindDynamicEHContinuationTarget(TargetRip); + if (found != FALSE) + { + return STATUS_SUCCESS; + } + } + // + // Otherwise, we either didn't find a dynamic handler, or this wasn't an unwind to begin with, + // so fail the request. + // + return STATUS_SET_CONTEXT_DENIED; +} \ No newline at end of file diff --git a/src/RtlpTargetCompare.c b/src/RtlpTargetCompare.c new file mode 100644 index 0000000..e11a611 --- /dev/null +++ b/src/RtlpTargetCompare.c @@ -0,0 +1,14 @@ +INT +RtlpTargetCompare ( + void* Context, + const void* Key, + const void* Datum + ) +{ + ULONG_PTR rva1; + ULONG_PTR rva2; + UNREFERENCED_PARAMETER(Context); + rva1 = *(PULONG_PTR)Key; + rva2 = *(PULONG_PTR)Datum; + return (INT)(rva1 - rva2); +} \ No newline at end of file