mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	um/ptrace: run seccomp after ptrace
Close the hole where ptrace can change a syscall out from under seccomp. Signed-off-by: Kees Cook <keescook@chromium.org> Cc: Jeff Dike <jdike@addtoit.com> Cc: Richard Weinberger <richard@nod.at> Cc: user-mode-linux-devel@lists.sourceforge.net
This commit is contained in:
		
							parent
							
								
									635efc7029
								
							
						
					
					
						commit
						26703c636c
					
				
					 1 changed files with 4 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -20,12 +20,12 @@ void handle_syscall(struct uml_pt_regs *r)
 | 
			
		|||
	UPT_SYSCALL_NR(r) = PT_SYSCALL_NR(r->gp);
 | 
			
		||||
	PT_REGS_SET_SYSCALL_RETURN(regs, -ENOSYS);
 | 
			
		||||
 | 
			
		||||
	/* Do the secure computing check first; failures should be fast. */
 | 
			
		||||
	if (secure_computing(NULL) == -1)
 | 
			
		||||
	if (syscall_trace_enter(regs))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (syscall_trace_enter(regs))
 | 
			
		||||
		goto out;
 | 
			
		||||
	/* Do the seccomp check after ptrace; failures should be fast. */
 | 
			
		||||
	if (secure_computing(NULL) == -1)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	/* Update the syscall number after orig_ax has potentially been updated
 | 
			
		||||
	 * with ptrace.
 | 
			
		||||
| 
						 | 
				
			
			@ -37,6 +37,5 @@ void handle_syscall(struct uml_pt_regs *r)
 | 
			
		|||
		PT_REGS_SET_SYSCALL_RETURN(regs,
 | 
			
		||||
				EXECUTE_SYSCALL(syscall, regs));
 | 
			
		||||
 | 
			
		||||
out:
 | 
			
		||||
	syscall_trace_leave(regs);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue