Thread (2 messages) 2 messages, 2 authors, 2019-08-01

Re: [PATCH] tomoyo: common: Fix potential Spectre v1 vulnerability

From: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Date: 2019-08-01 11:03:27
Also in: lkml

Hello.

Thanks for a patch, but I have a question.

On 2019/08/01 3:54, Gustavo A. R. Silva wrote:
profile is controlled by user-space via /sys/kernel/security/tomoyo/profile,
It is true that "profile" value is given from user-space, and it will be true
that speculative execution would access "ns->profile_ptr[profile]" before whether
"profile >= TOMOYO_MAX_PROFILES" is true is concluded. But
hence leading to a potential exploitation of the Spectre variant 1
vulnerability.
which memory address is vulnerable to Spectre variant 1 attack? How can an attacker
gain information from memory speculatively accessed by "ns->profile_ptr[profile]" ?
Where is the memory access which corresponds to "arr2->data[index2]" demonstrated at
https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html ?

Since I'm not familiar with Spectre/Meltdown problem, this patch sounds as if
"Oh, let's suppress Smatch warning". I want to know whether this problem is real
and this patch is worth keeping stable@vger.kernel.org ...
quoted hunk ↗ jump to hunk
@@ -488,13 +489,15 @@ static void tomoyo_print_number_union(struct tomoyo_io_buffer *head,
  * Returns pointer to "struct tomoyo_profile" on success, NULL otherwise.
  */
 static struct tomoyo_profile *tomoyo_assign_profile
-(struct tomoyo_policy_namespace *ns, const unsigned int profile)
+(struct tomoyo_policy_namespace *ns, unsigned int profile)
 {
 	struct tomoyo_profile *ptr;
 	struct tomoyo_profile *entry;
 
 	if (profile >= TOMOYO_MAX_PROFILES)
 		return NULL;
+	profile = array_index_nospec(profile, TOMOYO_MAX_PROFILES);
+
 	ptr = ns->profile_ptr[profile];
 	if (ptr)
 		return ptr;
By the way, since /sys/kernel/security/tomoyo/profile is writable by only explicitly
whitelisted domains/programs (&& by only root user by default), I think that it is
OK to treat this "profile" value as trusted.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help