PAX MPROTECT: added initial glues

[...]
20:31 <_op_> pax mprotect-nel PROT_MAY{READ,WRITE,EXEC} mennyire tori a mar meglevo implementaciokat?
20:31 <_op_> Az megvan, hogy a nem letezo flagekre az mmap hibat ad vissza, de gyakorlatban ez mennyi alkalmazas kb?
20:32 <pipacs> a MAY* flageket a kernel tartja nyilvan, userland nem befolyasolja
20:32 <pipacs> kb mint a MAXPROT bsd alatt asszem
[...]
20:33 <pipacs> az mprotect elvesz par MAY* flaget a W^X megvalositasa erdekeben (mmap idoben), amitol kesobbi mprotect-ek mar nem engednek W-X atmenetet egyik iranyban sem
20:33 <pipacs> minden program elhasal ezen ami futasidoben akarna kodot generalni
20:33 <_op_> igen, maxprotta kell atforditani bsd-k alatt, csak a _MAY*-ot latom celszerunek kivezetni userland-be, ha mar te ugy csinaltad, es legyen mar ilyen szinten kompatibilis a ketto
20:33 <pipacs> mondom, a MAY* flageket nem latja/befolyasolja a userland
20:34 <pipacs> bar anno volt ra otlet hogy jo lenne ha tudna kontrollalni egy app de ehhez kozossegi konszenzus kene hiszen posix api-rol van szo
20:34 <pipacs> azota se lett belole semmi :)
20:34 <_op_> akkor a draftban meg ez van benne
20:35 <pipacs> ehelyett paxban a kernel probal okoskodni pl. TEXTREL meg RELRO ugyben
20:35 <pipacs> ja hat az a doksi azert eleg regi mar, valtoztak azota a dolgok
20:36 <_op_> az alapjan kezdtem el indulni es kb megvan, hogy hogy lehet attolni a rendszeren az uj flageket, csak gondoltam elotte rakerdezek, hogy mennyire esszeru
20:36 <pipacs> en azt mondom hogy ha MPROTECT-et akartok csinalni, akkor csak ovatosan, mert sokan fognak rinyalmi miatta ;)
[...]
20:36 <_op_> nincs az a vilag, hogy az attoljuk rajtuk
20:36 <pipacs> desktopon az osszes bongeszo a jit enginek miatt, java, ffi, stb
20:37 <pipacs> szerveren java/v8 jatszik leginkabb
20:37 <_op_> akkor emutramp-ot is meg kell csinalni ffi miatt
20:37 <pipacs> ja meg az opengl csoda libek ;)
20:38 <_op_> multkor lattam valamit kint twitteren toletek, hogy az nvidia alkotott valamit az ugyben
20:38 <pipacs> igen, az lenne a masik szukseges lepes ha minel kevesebb programon akartok kivetelt (marmint tiltani az MPROTECT-et)
20:38 <pipacs> spender volt az, vmi user irt egy gentoo forumra hogy az nvidia nyar ota lehetove teszi a runtime codegen tiltast
20:38 <_op_> errol van valami doksi, hogy milyen kodokat kell emulalni, vagy nezzem meg nalatok?
20:38 <pipacs> azt persze nem irtak le a jokepesseguek hogy ez mivel jar (gyanitom lassulassal)
20:39 <pipacs> pax ketfele kodszekvenciat emulal alapvetoen: gcc nested function trampoline (ebbol van par verzio, de nem veszes), es ujabban libffi trampoline-t is
20:39 <pipacs> esetleg ha fbsd meg a vermen tolja a sigreturn kodot, akkor azt is emulalni kell nektek (vagy megirni rendesen mint linux alatt, ahol a vdso-ba van kitolva)
20:40 <_op_> vermen van, jobban mondva vdso helyett csak egy shared page-en
20:40 <pipacs> nvidia doksirol nem tudok, asszem a changelogban van ket sor erejeig megemlitve csak
20:40 <_op_> ami a verem tejen van, viszont szeparalhato
20:41 <pipacs> az is jo, a lenyeg hogy nem legyen irhato memoria userlandbol
[...]

github-issue: #37
Discussed-by: PaX Team <pageexec@freemail.hu>
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD: enable PAX_MPROTECT in OP-HBSD kernel config

Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD: change PAX_NOTE values

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD MPROTECT: rename hardenedbsd/hbsd_pax_mprotect.c -> hardenedbsd/hbsd_pax_noexec.c

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD MPROTECT: added PAX_PAGEEXEC option

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD PAGEEXEC: added initial framwork

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: prepare default status

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: implement pax_{pageexec,mprotect}

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: implement pax_mprotect_enforce(...)

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: remove old basic version of mprotect hardening

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD: enforce INVARIANTS if building secured host

If you really know what you're doing and you can specify
PAX_INSECURE_MODE to disable this enforcement

github-issue: #25
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: hook in pax_{pageexec,mprotect}

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: remove old linux mmap hack

github-issue: #37 #4
Signed-off-by: Oliver Pinter <oliver.pntr@gmail.com>
HBSD NOEXEC: change pax_{pageexec,segvguard} parameter type

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: add KTR debug messages

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: fix build if PAX_MPROTECT not set

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: add new flags to validation

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: fix typo in pax_mprotect(...) and in pax_elf(...)

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pntr@gmail.com>
HBSD NOEXEC: use maxprot variable in vm_map_insert

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>
HBSD NOEXEC: restrict sys_obreak with PAGEEXEC and MPROTECT

github-issue: #37
Signed-off-by: Oliver Pinter <oliver.pinter@hardenedbsd.org>