1 |
On 01.11.2014 11:08, Alex Efros wrote: |
2 |
> Hi! |
3 |
> |
4 |
> I wonder is something was changed in handling "grsec: denied RWX mprotect"? |
5 |
> Previously when I see this in kernel log it usually result in killing app |
6 |
> (and I've to run `paxctl-ng -m /that/app`), but now it looks like this |
7 |
> doesn't happens anymore. For example: |
8 |
> |
9 |
> # eselect opengl list |
10 |
> Available OpenGL implementations: |
11 |
> [1] nvidia * |
12 |
> [2] xorg-x11 |
13 |
> # grep PAX /etc/portage/make.conf |
14 |
> PAX_MARKINGS="XT" |
15 |
> # paxctl-ng -v /usr/bin/glxgears |
16 |
> /usr/bin/glxgears: |
17 |
> PT_PAX : -e--- |
18 |
> XATTR_PAX : not found |
19 |
> # /usr/bin/glxgears |
20 |
> Running synchronized to the vertical refresh. The framerate should be |
21 |
> approximately the same as the monitor refresh rate. |
22 |
> 302 frames in 5.0 seconds = 60.336 FPS |
23 |
> 300 frames in 5.0 seconds = 59.960 FPS |
24 |
> (so, as you see, it works!) |
25 |
> |
26 |
> and here is kernel log: |
27 |
> |
28 |
> 2014-11-01_10:00:19.58867 kern.alert: grsec: denied RWX mprotect of /usr/lib64/opengl/nvidia/lib/libGL.so.343.22 by /usr/bin/glxgears[glxgears:12208] uid/euid:0/0 gid/egid:0/0, parent /bin/bash[bash:8601] uid/euid:0/0 gid/egid:0/0 |
29 |
Since nvidia-drivers-340.17 NVIDIA implemented some fallbacks for |
30 |
systems where writing to executable memory is not allowed: |
31 |
|
32 |
2014-06-09 version 340.17 |
33 |
|
34 |
[...] |
35 |
|
36 |
* Improved support for running the NVIDIA driver in configurations |
37 |
where |
38 |
writing to executable memory is disallowed. Driver optimizations |
39 |
that |
40 |
require writing to executable memory can be forcefully disabled |
41 |
using the |
42 |
new __GL_WRITE_TEXT_SECTION environment variable. See the README |
43 |
for more |
44 |
details. |
45 |
|
46 |
I haven't tested this myself yet, but it seems this should finally allow |
47 |
running NVIDIA binary driver on PaX-enabled systems. |
48 |
|
49 |
> |
50 |
> At same time paxtest works ok (all killed). |
51 |
> |
52 |
> |
53 |
> My kernel config: |
54 |
> |
55 |
> # zgrep PAX /proc/config.gz |
56 |
> |
57 |
> CONFIG_PAX_USERCOPY_SLABS=y |
58 |
> CONFIG_PAX=y |
59 |
> # CONFIG_PAX_SOFTMODE is not set |
60 |
> # CONFIG_PAX_PT_PAX_FLAGS is not set |
61 |
> CONFIG_PAX_XATTR_PAX_FLAGS=y |
62 |
> CONFIG_PAX_NO_ACL_FLAGS=y |
63 |
> # CONFIG_PAX_HAVE_ACL_FLAGS is not set |
64 |
> # CONFIG_PAX_HOOK_ACL_FLAGS is not set |
65 |
> CONFIG_PAX_NOEXEC=y |
66 |
> CONFIG_PAX_PAGEEXEC=y |
67 |
> CONFIG_PAX_EMUTRAMP=y |
68 |
> CONFIG_PAX_MPROTECT=y |
69 |
> # CONFIG_PAX_MPROTECT_COMPAT is not set |
70 |
> # CONFIG_PAX_ELFRELOCS is not set |
71 |
> # CONFIG_PAX_KERNEXEC is not set |
72 |
> CONFIG_PAX_KERNEXEC_PLUGIN_METHOD="" |
73 |
> CONFIG_PAX_ASLR=y |
74 |
> # CONFIG_PAX_RANDKSTACK is not set |
75 |
> CONFIG_PAX_RANDUSTACK=y |
76 |
> CONFIG_PAX_RANDMMAP=y |
77 |
> # CONFIG_PAX_MEMORY_SANITIZE is not set |
78 |
> # CONFIG_PAX_MEMORY_STACKLEAK is not set |
79 |
> CONFIG_PAX_MEMORY_STRUCTLEAK=y |
80 |
> # CONFIG_PAX_MEMORY_UDEREF is not set |
81 |
> CONFIG_PAX_REFCOUNT=y |
82 |
> CONFIG_PAX_USERCOPY=y |
83 |
> # CONFIG_PAX_USERCOPY_DEBUG is not set |
84 |
> # CONFIG_PAX_SIZE_OVERFLOW is not set |
85 |
> # CONFIG_PAX_LATENT_ENTROPY is not set |
86 |
> |
87 |
> # zgrep GRKERNSEC /proc/config.gz |
88 |
> |
89 |
> CONFIG_GRKERNSEC=y |
90 |
> # CONFIG_GRKERNSEC_CONFIG_AUTO is not set |
91 |
> CONFIG_GRKERNSEC_CONFIG_CUSTOM=y |
92 |
> CONFIG_GRKERNSEC_PROC_GID=1000 |
93 |
> CONFIG_GRKERNSEC_KMEM=y |
94 |
> # CONFIG_GRKERNSEC_IO is not set |
95 |
> CONFIG_GRKERNSEC_PERF_HARDEN=y |
96 |
> CONFIG_GRKERNSEC_RAND_THREADSTACK=y |
97 |
> CONFIG_GRKERNSEC_PROC_MEMMAP=y |
98 |
> # CONFIG_GRKERNSEC_KSTACKOVERFLOW is not set |
99 |
> # CONFIG_GRKERNSEC_BRUTE is not set |
100 |
> CONFIG_GRKERNSEC_MODHARDEN=y |
101 |
> CONFIG_GRKERNSEC_HIDESYM=y |
102 |
> # CONFIG_GRKERNSEC_RANDSTRUCT is not set |
103 |
> # CONFIG_GRKERNSEC_KERN_LOCKOUT is not set |
104 |
> CONFIG_GRKERNSEC_NO_RBAC=y |
105 |
> CONFIG_GRKERNSEC_ACL_HIDEKERN=y |
106 |
> CONFIG_GRKERNSEC_ACL_MAXTRIES=3 |
107 |
> CONFIG_GRKERNSEC_ACL_TIMEOUT=30 |
108 |
> CONFIG_GRKERNSEC_PROC=y |
109 |
> # CONFIG_GRKERNSEC_PROC_USER is not set |
110 |
> CONFIG_GRKERNSEC_PROC_USERGROUP=y |
111 |
> CONFIG_GRKERNSEC_PROC_ADD=y |
112 |
> CONFIG_GRKERNSEC_LINK=y |
113 |
> # CONFIG_GRKERNSEC_SYMLINKOWN is not set |
114 |
> CONFIG_GRKERNSEC_FIFO=y |
115 |
> # CONFIG_GRKERNSEC_SYSFS_RESTRICT is not set |
116 |
> # CONFIG_GRKERNSEC_ROFS is not set |
117 |
> CONFIG_GRKERNSEC_DEVICE_SIDECHANNEL=y |
118 |
> CONFIG_GRKERNSEC_CHROOT=y |
119 |
> CONFIG_GRKERNSEC_CHROOT_MOUNT=y |
120 |
> CONFIG_GRKERNSEC_CHROOT_DOUBLE=y |
121 |
> CONFIG_GRKERNSEC_CHROOT_PIVOT=y |
122 |
> CONFIG_GRKERNSEC_CHROOT_CHDIR=y |
123 |
> CONFIG_GRKERNSEC_CHROOT_CHMOD=y |
124 |
> CONFIG_GRKERNSEC_CHROOT_FCHDIR=y |
125 |
> CONFIG_GRKERNSEC_CHROOT_MKNOD=y |
126 |
> CONFIG_GRKERNSEC_CHROOT_SHMAT=y |
127 |
> CONFIG_GRKERNSEC_CHROOT_UNIX=y |
128 |
> CONFIG_GRKERNSEC_CHROOT_FINDTASK=y |
129 |
> CONFIG_GRKERNSEC_CHROOT_NICE=y |
130 |
> CONFIG_GRKERNSEC_CHROOT_SYSCTL=y |
131 |
> CONFIG_GRKERNSEC_CHROOT_CAPS=y |
132 |
> # CONFIG_GRKERNSEC_AUDIT_GROUP is not set |
133 |
> # CONFIG_GRKERNSEC_EXECLOG is not set |
134 |
> CONFIG_GRKERNSEC_RESLOG=y |
135 |
> # CONFIG_GRKERNSEC_CHROOT_EXECLOG is not set |
136 |
> CONFIG_GRKERNSEC_AUDIT_PTRACE=y |
137 |
> # CONFIG_GRKERNSEC_AUDIT_CHDIR is not set |
138 |
> # CONFIG_GRKERNSEC_AUDIT_MOUNT is not set |
139 |
> CONFIG_GRKERNSEC_SIGNAL=y |
140 |
> CONFIG_GRKERNSEC_FORKFAIL=y |
141 |
> # CONFIG_GRKERNSEC_TIME is not set |
142 |
> CONFIG_GRKERNSEC_PROC_IPADDR=y |
143 |
> CONFIG_GRKERNSEC_RWXMAP_LOG=y |
144 |
> CONFIG_GRKERNSEC_DMESG=y |
145 |
> CONFIG_GRKERNSEC_HARDEN_PTRACE=y |
146 |
> CONFIG_GRKERNSEC_PTRACE_READEXEC=y |
147 |
> CONFIG_GRKERNSEC_SETXID=y |
148 |
> CONFIG_GRKERNSEC_HARDEN_IPC=y |
149 |
> # CONFIG_GRKERNSEC_TPE is not set |
150 |
> CONFIG_GRKERNSEC_RANDNET=y |
151 |
> CONFIG_GRKERNSEC_BLACKHOLE=y |
152 |
> CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y |
153 |
> # CONFIG_GRKERNSEC_SOCKET is not set |
154 |
> # CONFIG_GRKERNSEC_DENYUSB is not set |
155 |
> CONFIG_GRKERNSEC_SYSCTL=y |
156 |
> CONFIG_GRKERNSEC_SYSCTL_ON=y |
157 |
> CONFIG_GRKERNSEC_FLOODTIME=10 |
158 |
> CONFIG_GRKERNSEC_FLOODBURST=4 |
159 |
> |