|
@@ -46,14 +46,13 @@ restrictions, it can call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, ...)
|
|
|
so that any otherwise allowed process (even those in external pid namespaces)
|
|
|
may attach.
|
|
|
|
|
|
-These restrictions do not change how ptrace via PTRACE_TRACEME operates.
|
|
|
-
|
|
|
-The sysctl settings are:
|
|
|
+The sysctl settings (writable only with CAP_SYS_PTRACE) are:
|
|
|
|
|
|
0 - classic ptrace permissions: a process can PTRACE_ATTACH to any other
|
|
|
process running under the same uid, as long as it is dumpable (i.e.
|
|
|
did not transition uids, start privileged, or have called
|
|
|
- prctl(PR_SET_DUMPABLE...) already).
|
|
|
+ prctl(PR_SET_DUMPABLE...) already). Similarly, PTRACE_TRACEME is
|
|
|
+ unchanged.
|
|
|
|
|
|
1 - restricted ptrace: a process must have a predefined relationship
|
|
|
with the inferior it wants to call PTRACE_ATTACH on. By default,
|
|
@@ -61,12 +60,13 @@ The sysctl settings are:
|
|
|
classic criteria is also met. To change the relationship, an
|
|
|
inferior can call prctl(PR_SET_PTRACER, debugger, ...) to declare
|
|
|
an allowed debugger PID to call PTRACE_ATTACH on the inferior.
|
|
|
+ Using PTRACE_TRACEME is unchanged.
|
|
|
|
|
|
2 - admin-only attach: only processes with CAP_SYS_PTRACE may use ptrace
|
|
|
- with PTRACE_ATTACH.
|
|
|
+ with PTRACE_ATTACH, or through children calling PTRACE_TRACEME.
|
|
|
|
|
|
-3 - no attach: no processes may use ptrace with PTRACE_ATTACH. Once set,
|
|
|
- this sysctl cannot be changed to a lower value.
|
|
|
+3 - no attach: no processes may use ptrace with PTRACE_ATTACH nor via
|
|
|
+ PTRACE_TRACEME. Once set, this sysctl value cannot be changed.
|
|
|
|
|
|
The original children-only logic was based on the restrictions in grsecurity.
|
|
|
|