reactos/ntoskrnl
George Bișoc 55c117c4c9
[NTOS:SE] Deny access to the caller if access is not allowed by the object
There are two fundamental problems when it comes to access checks in ReactOS. First, the internal function SepAccessCheck which is the heart and brain of the whole access checks logic of the kernel warrants access to the calling thread of a process to an object even though access could not be given.

This can potentially leave security issues as we literally leave objects to be touched indiscriminately by anyone regardless of their ACEs in the DACL of a security descriptor. Second, the current access check code doesn't take into account the fact that an access token can have restricted SIDs. In such scenario we must perform additional access checks by iterating over the restricted SIDs of the primary token by comparing the SID equality and see if the group can be granted certain rights based on the ACE policy that represents the same SID.

Part of SepAccessCheck's code logic will be split for a separate private kernel routine, SepAnalyzeAcesFromDacl. The reasons for this are primarily two -- such code is subject to grow eventually as we'll support different type ACEs and handle them accordingly -- and we avoid further code duplicates. On Windows Server 2003 there are 5 different type of ACEs that are supported for access checks:

- ACCESS_DENIED_ACE_TYPE (supported by ReactOS)
- ACCESS_ALLOWED_ACE_TYPE (supported by ReactOS)
- ACCESS_DENIED_OBJECT_ACE_TYPE
- ACCESS_ALLOWED_OBJECT_ACE_TYPE
- ACCESS_ALLOWED_COMPOUND_ACE_TYPE

This gives the opportunity for us to have a semi serious kernel where security of objects are are taken into account, rather than giving access to everyone.

CORE-9174
CORE-9175
CORE-9184
CORE-14520
2022-05-06 10:09:53 +02:00
..
cache [NTOS:MM] Fix another instance of reentrant spinlock acquisition 2021-06-29 11:49:20 +02:00
cc [NTOS:CC] Unintialize private cache maps before purging the cache section 2022-02-02 17:45:59 +01:00
config [NTOS:CM] Adapt cmboot.c for usage in NT/ReactOS bootloader. 2022-04-16 18:37:45 +02:00
dbgk [NTOSKRNL] Regroup the pool allocation tags in one dedicated place 2021-12-27 18:57:03 +01:00
ex [NTOS:EX] Only set WakeTimer-related status if timer handle is valid. CORE-18133 2022-04-03 20:13:09 -04:00
fsrtl [NTOS:FSRTL] Assign the buffer length to ThisBufferLength field 2022-01-11 10:11:08 +01:00
fstub [NTOS:IO/FSTUB] Fix the determination of 'SingleDisk' in IoGetBootDiskInformation(). 2021-06-11 02:21:47 +02:00
inbv [NTOS:INBV] Code refactoring: Move all the boot animation-specific code out of inbv.c and into the new bootanim.c file. 2022-02-13 21:29:14 +01:00
include [NTOS:SE] Add SepGetSidFromAce prototype & Niscellaneous Stuff 2022-05-06 10:09:52 +02:00
io [NTOS:PNP] Fix GCC build (ignoring return value) (#4473) 2022-04-28 22:16:37 +09:00
kd [NTOS:KD][NTOS:KD64][NTOS:KDBG] Fix IRQL & spinlock use 2021-06-29 11:49:20 +02:00
kd64 [NTOS:KD64,KE] IRQL is automatically adjusted during calls to KdEnterDebugger() and KdExitDebugger(). (#3942) 2021-09-12 18:20:32 +02:00
kdbg [NTOSKRNL] Regroup the pool allocation tags in one dedicated place 2021-12-27 18:57:03 +01:00
ke [NTOS:KE] Remove all checks for x87 not being present 2022-01-25 02:12:33 +03:00
lpc [NTOS:LPC] NtReplyWaitReceivePortEx returns the correct TotalLength for connect messages 2021-11-24 18:59:16 +01:00
mm [NTOS:MM] Implement partial virtual region releases. CORE-17938 2022-01-22 15:07:06 -05:00
ntkrnlmp [CMAKE] Use the "kernel" module type for ntoskrnl and ntkrnlmp 2021-03-23 11:18:43 +01:00
ob [NTOS:OB] Charge/Return pool quotas of objects 2022-01-11 10:11:10 +01:00
po [NTOSKRNL] Regroup the pool allocation tags in one dedicated place 2021-12-27 18:57:03 +01:00
ps [NTOS:PS] Use quota types on process quota querying 2022-01-11 11:21:15 +01:00
rtl [NTOSKRNL] Regroup the pool allocation tags in one dedicated place 2021-12-27 18:57:03 +01:00
se [NTOS:SE] Deny access to the caller if access is not allowed by the object 2022-05-06 10:09:53 +02:00
tests Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
vdm [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
vf Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
wmi [REACTOS] Fix traces with missing arguments. 2021-11-21 12:57:35 -05:00
CMakeLists.txt [CMAKE] Fixes for clang-cl build 2021-09-14 17:58:23 +03:00
guid.c [NTOSKRNL] Rewrite IoAssignDriveLetters to make NT5 compliant 2019-10-21 18:28:40 +02:00
KrnlFun.c Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
ntdll.S Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
ntos.cmake [NTOS:INBV] Code refactoring: Move all the boot animation-specific code out of inbv.c and into the new bootanim.c file. 2022-02-13 21:29:14 +01:00
ntoskrnl.rc [NTOS:INBV] Refactor boot screen code and resources (#1649) 2019-08-20 01:52:25 +02:00
ntoskrnl.spec [ARM] Fix some compilation errors for ARM 2021-09-09 19:40:20 +03:00
sysfuncs.lst Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00