File tree Expand file tree Collapse file tree 4 files changed +58
-0
lines changed
Expand file tree Collapse file tree 4 files changed +58
-0
lines changed Original file line number Diff line number Diff line change @@ -33,6 +33,14 @@ document.
3333
3434These virtiofs external volumes are not supported when SELinux is running
3535in enforcing mode.
36+ """
37+
38+ [notes .procpidmem ]
39+ title = " /proc/PID/mem Access Hardening"
40+ description = """ \
41+ A new kernel parameter `proc_mem.force_override=never` has been introduced by default to enhance system security
42+ by preventing unwanted writes to protected process memory via `/proc/PID/mem`.
43+ If the kernel parameter is removed, default behavior is restored, allowing access only if the process is traced.
3644"""
3745
3846[make_deps ]
Original file line number Diff line number Diff line change @@ -310,3 +310,15 @@ func (q Quirks) ISOSupportsSettingBootloader() bool {
310310
311311 return q .v .GTE (minTalosVersionISOSupportsSettingBootloader )
312312}
313+
314+ var minTalosVersionProcMemOverrideNever = semver .MustParse ("1.13.0" )
315+
316+ // ProcMemOverrideNever returns true if the Talos version should enforce 'proc_mem.force_override=never'.
317+ func (q Quirks ) ProcMemOverrideNever () bool {
318+ // if the version doesn't parse, we assume it's latest Talos
319+ if q .v == nil {
320+ return true
321+ }
322+
323+ return q .v .GTE (minTalosVersionProcMemOverrideNever )
324+ }
Original file line number Diff line number Diff line change @@ -52,6 +52,10 @@ func DefaultArgs(quirks quirks.Quirks) []string {
5252 result = append (result , constants .KernelParamEnforceModuleSigVerify + "=1" ) // see https://github.com/siderolabs/talos/issues/11989
5353 }
5454
55+ if quirks .ProcMemOverrideNever () {
56+ result = append (result , "proc_mem.force_override=never" )
57+ }
58+
5559 return result
5660}
5761
Original file line number Diff line number Diff line change @@ -91,6 +91,7 @@ func TestDefaultKernelArgs(t *testing.T) {
9191 "printk.devkmsg=on" ,
9292 "selinux=1" ,
9393 "module.sig_enforce=1" ,
94+ "proc_mem.force_override=never" ,
9495 },
9596 },
9697 {
@@ -110,6 +111,39 @@ func TestDefaultKernelArgs(t *testing.T) {
110111 "ima_hash=sha512" ,
111112 },
112113 },
114+ {
115+ name : "v1.12" ,
116+
117+ quirks : quirks .New ("v1.12.0" ),
118+
119+ expected : []string {
120+ "init_on_alloc=1" ,
121+ "slab_nomerge=" ,
122+ "pti=on" ,
123+ "consoleblank=0" ,
124+ "nvme_core.io_timeout=4294967295" ,
125+ "printk.devkmsg=on" ,
126+ "selinux=1" ,
127+ "module.sig_enforce=1" ,
128+ },
129+ },
130+ {
131+ name : "v1.13" ,
132+
133+ quirks : quirks .New ("v1.13.0" ),
134+
135+ expected : []string {
136+ "init_on_alloc=1" ,
137+ "slab_nomerge=" ,
138+ "pti=on" ,
139+ "consoleblank=0" ,
140+ "nvme_core.io_timeout=4294967295" ,
141+ "printk.devkmsg=on" ,
142+ "selinux=1" ,
143+ "module.sig_enforce=1" ,
144+ "proc_mem.force_override=never" ,
145+ },
146+ },
113147 } {
114148 t .Run (test .name , func (t * testing.T ) {
115149 t .Parallel ()
You can’t perform that action at this time.
0 commit comments