All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] libselinux: ignore invalid class name lookup
@ 2022-10-24  9:13 Thiébaud Weksteen
  2022-10-24  9:17 ` Thiébaud Weksteen
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Thiébaud Weksteen @ 2022-10-24  9:13 UTC (permalink / raw)
  To: selinux
  Cc: James Carter, Paul Moore, Jeffrey Vander Stoep, Thiébaud Weksteen

selinux_check_access relies on string_to_security_class to resolve the
class index from its char* argument. There is no input validation done
on the string provided. It is possible to supply an argument containing
trailing backslashes (i.e., "sock_file//////") so that the paths built
in discover_class get truncated. The processing will then reference the
same permission file multiple time (e.g., perms/watch_reads will be
truncated to perms/watch). This will leak the memory allocated when
strdup'ing the permission name. The discover_class_cache will end up in
an invalid state (but not corrupted).

Ensure that the class provided does not contain any path separator.

Signed-off-by: Thiébaud Weksteen <tweek@google.com>
---
 libselinux/src/stringrep.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libselinux/src/stringrep.c b/libselinux/src/stringrep.c
index 2fe69f43..592410e5 100644
--- a/libselinux/src/stringrep.c
+++ b/libselinux/src/stringrep.c
@@ -63,6 +63,9 @@ static struct discover_class_node * discover_class(const char *s)
 		return NULL;
 	}
 
+	if (strchr(s, '/') != NULL)
+		return NULL;
+
 	/* allocate a node */
 	node = malloc(sizeof(struct discover_class_node));
 	if (node == NULL)
-- 
2.38.0.135.g90850a2211-goog


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

end of thread, other threads:[~2022-11-09 13:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-24  9:13 [PATCH] libselinux: ignore invalid class name lookup Thiébaud Weksteen
2022-10-24  9:17 ` Thiébaud Weksteen
2022-11-04 21:03 ` James Carter
2022-11-04 21:21   ` Christian Göttsche
2022-11-08  3:56     ` Thiébaud Weksteen
2022-11-08 19:14       ` James Carter
2022-11-08 19:14 ` James Carter
2022-11-09 13:48   ` James Carter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.