Linux-Fsdevel Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH] proc/sysctl: make protected_* world readable
@ 2020-07-09 23:51 Julius Hemanth Pitti
  2020-07-10  4:31 ` Kees Cook
  0 siblings, 1 reply; 3+ messages in thread
From: Julius Hemanth Pitti @ 2020-07-09 23:51 UTC (permalink / raw)
  To: keescook, yzaikin, mcgrof
  Cc: linux-kernel, linux-fsdevel, akpm, mingo, viro,
	xe-linux-external, Julius Hemanth Pitti

protected_* files have 600 permissions which prevents
non-superuser from reading them.

Container like "AWS greengrass" refuse to launch unless
protected_hardlinks and protected_symlinks are set. When
containers like these run with "userns-remap" or "--user"
mapping container's root to non-superuser on host, they
fail to run due to denied read access to these files.

As these protections are hardly a secret, and do not
possess any security risk, making them world readable.

Though above greengrass usecase needs read access to
only protected_hardlinks and protected_symlinks files,
setting all other protected_* files to 644 to keep
consistency.

Fixes: 800179c9b8a1 ("fs: add link restrictions")
Signed-off-by: Julius Hemanth Pitti <jpitti@cisco.com>
---
 kernel/sysctl.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index db1ce7a..aeca2fd 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -3223,7 +3223,7 @@ int proc_do_static_key(struct ctl_table *table, int write,
 		.procname	= "protected_symlinks",
 		.data		= &sysctl_protected_symlinks,
 		.maxlen		= sizeof(int),
-		.mode		= 0600,
+		.mode		= 0644,
 		.proc_handler	= proc_dointvec_minmax,
 		.extra1		= SYSCTL_ZERO,
 		.extra2		= SYSCTL_ONE,
@@ -3232,7 +3232,7 @@ int proc_do_static_key(struct ctl_table *table, int write,
 		.procname	= "protected_hardlinks",
 		.data		= &sysctl_protected_hardlinks,
 		.maxlen		= sizeof(int),
-		.mode		= 0600,
+		.mode		= 0644,
 		.proc_handler	= proc_dointvec_minmax,
 		.extra1		= SYSCTL_ZERO,
 		.extra2		= SYSCTL_ONE,
@@ -3241,7 +3241,7 @@ int proc_do_static_key(struct ctl_table *table, int write,
 		.procname	= "protected_fifos",
 		.data		= &sysctl_protected_fifos,
 		.maxlen		= sizeof(int),
-		.mode		= 0600,
+		.mode		= 0644,
 		.proc_handler	= proc_dointvec_minmax,
 		.extra1		= SYSCTL_ZERO,
 		.extra2		= &two,
@@ -3250,7 +3250,7 @@ int proc_do_static_key(struct ctl_table *table, int write,
 		.procname	= "protected_regular",
 		.data		= &sysctl_protected_regular,
 		.maxlen		= sizeof(int),
-		.mode		= 0600,
+		.mode		= 0644,
 		.proc_handler	= proc_dointvec_minmax,
 		.extra1		= SYSCTL_ZERO,
 		.extra2		= &two,
-- 
1.7.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] proc/sysctl: make protected_* world readable
  2020-07-09 23:51 [PATCH] proc/sysctl: make protected_* world readable Julius Hemanth Pitti
@ 2020-07-10  4:31 ` Kees Cook
  2020-07-29  0:03   ` Luis Chamberlain
  0 siblings, 1 reply; 3+ messages in thread
From: Kees Cook @ 2020-07-10  4:31 UTC (permalink / raw)
  To: Julius Hemanth Pitti, mingo, akpm
  Cc: yzaikin, mcgrof, linux-kernel, linux-fsdevel, viro,
	xe-linux-external, jannh

On Thu, Jul 09, 2020 at 04:51:15PM -0700, Julius Hemanth Pitti wrote:
> protected_* files have 600 permissions which prevents
> non-superuser from reading them.
> 
> Container like "AWS greengrass" refuse to launch unless
> protected_hardlinks and protected_symlinks are set. When
> containers like these run with "userns-remap" or "--user"
> mapping container's root to non-superuser on host, they
> fail to run due to denied read access to these files.
> 
> As these protections are hardly a secret, and do not
> possess any security risk, making them world readable.
> 
> Though above greengrass usecase needs read access to
> only protected_hardlinks and protected_symlinks files,
> setting all other protected_* files to 644 to keep
> consistency.
> 
> Fixes: 800179c9b8a1 ("fs: add link restrictions")
> Signed-off-by: Julius Hemanth Pitti <jpitti@cisco.com>

Acked-by: Kees Cook <keescook@chromium.org>

I had originally proposed it as 0644, but Ingo asked that it have
a more conservative default value[1]. I figured that given the settings
can be discovered easily, it's not worth much. And if there are legit
cases where things are improved, I don't have a problem switching this
back.

Ingo, any thoughts on this now, 8 years later in the age of containers?
:)

(One devil's advocate question: as a workaround, you are able to just
change those files to 0644 after mounting /proc, yes? But regardless,
why get in people's way for no justifiable reason.)

-Kees

[1] https://lore.kernel.org/lkml/20120105091704.GB3249@elte.hu/

-- 
Kees Cook

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] proc/sysctl: make protected_* world readable
  2020-07-10  4:31 ` Kees Cook
@ 2020-07-29  0:03   ` Luis Chamberlain
  0 siblings, 0 replies; 3+ messages in thread
From: Luis Chamberlain @ 2020-07-29  0:03 UTC (permalink / raw)
  To: Kees Cook
  Cc: Julius Hemanth Pitti, mingo, akpm, yzaikin, linux-kernel,
	linux-fsdevel, viro, xe-linux-external, jannh

On Thu, Jul 09, 2020 at 09:31:37PM -0700, Kees Cook wrote:
> On Thu, Jul 09, 2020 at 04:51:15PM -0700, Julius Hemanth Pitti wrote:
> > protected_* files have 600 permissions which prevents
> > non-superuser from reading them.
> > 
> > Container like "AWS greengrass" refuse to launch unless
> > protected_hardlinks and protected_symlinks are set. When
> > containers like these run with "userns-remap" or "--user"
> > mapping container's root to non-superuser on host, they
> > fail to run due to denied read access to these files.
> > 
> > As these protections are hardly a secret, and do not
> > possess any security risk, making them world readable.
> > 
> > Though above greengrass usecase needs read access to
> > only protected_hardlinks and protected_symlinks files,
> > setting all other protected_* files to 644 to keep
> > consistency.
> > 
> > Fixes: 800179c9b8a1 ("fs: add link restrictions")
> > Signed-off-by: Julius Hemanth Pitti <jpitti@cisco.com>
> 
> Acked-by: Kees Cook <keescook@chromium.org>
> 
> I had originally proposed it as 0644, but Ingo asked that it have
> a more conservative default value[1]. I figured that given the settings
> can be discovered easily, it's not worth much. And if there are legit
> cases where things are improved, I don't have a problem switching this
> back.

If we're going to to do this, can we please document why these are
"protected" then?

  Luis

> 
> Ingo, any thoughts on this now, 8 years later in the age of containers?
> :)
> 
> (One devil's advocate question: as a workaround, you are able to just
> change those files to 0644 after mounting /proc, yes? But regardless,
> why get in people's way for no justifiable reason.)
> 
> -Kees
> 
> [1] https://lore.kernel.org/lkml/20120105091704.GB3249@elte.hu/
> 
> -- 
> Kees Cook

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-07-29  0:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-09 23:51 [PATCH] proc/sysctl: make protected_* world readable Julius Hemanth Pitti
2020-07-10  4:31 ` Kees Cook
2020-07-29  0:03   ` Luis Chamberlain

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).