SysFn 18.13 security fix: now apps cannot destroy kernel memory via passing illegal address in ecx

Update docs on SysFn 18.13

git-svn-id: svn://kolibrios.org@8247 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Rustem Gimadutdinov (rgimad) 2020-11-24 12:49:42 +00:00
parent 5d4528238c
commit 4e919c4eb5
3 changed files with 26 additions and 0 deletions

View File

@ -956,6 +956,14 @@ picture rb Xsize*Ysize*4 ; 32 бита
информация
Возвращаемое значение:
* функция не возвращает значения
но, если указатель в ecx недопустимый, например,
регион [ecx, ecx + 9) пересекается с памятью ядра,
то тогда функция возвращает -1
Замечания:
* В данный момент используется только часть буфера размером
9 байт. Тем не менее рекомендуется использовать буфер
размером 16 байт для будущей совместимости, в будущем могут быть
добавлены некоторые поля.
Структура буфера:
db a,b,c,d для версии a.b.c.d
db 0: зарезервировано

View File

@ -949,6 +949,14 @@ Parameters:
the information will be placed
Returned value:
* function does not return value
but if pointer in ecx is illegal, for example,
[ecx, ecx + 9) region intersects with kernel memory,
then function returns -1
Remarks:
* At the moment only the part of the buffer by a size
9 bytes is used. Nevertheless it is recommended to use
16 byte buffer for the future compatibility, in the future
some fields can be added.
Structure of the buffer:
db a,b,c,d for version a.b.c.d
db 0: reserved

View File

@ -2455,11 +2455,21 @@ sysfn_lastkey: ; 18.12 = return 0 (backward compatibility)
ret
;------------------------------------------------------------------------------
sysfn_getversion: ; 18.13 = get kernel ID and version
; if given memory address belongs to kernel then error
mov eax, ecx
mov ebx, version_end-version_inf
call is_region_userspace
test eax, eax
jz .addr_error
mov edi, ecx
mov esi, version_inf
mov ecx, version_end-version_inf
rep movsb
ret
.addr_error: ; if given memory address is illegal
mov eax, -1
ret
;------------------------------------------------------------------------------
sysfn_waitretrace: ; 18.14 = sys wait retrace
;wait retrace functions