No. CAP_RAWIO is for reading. Writing needs a much stronger check. -Kees On Fri, Feb 8, 2013 at 11:17 AM, H. Peter Anvin <hpa@xxxxxxxxx> wrote: > We already have CAP_RAWIO for this in mainline; I am not sure if this should be harder than that... > > Kees Cook <keescook@xxxxxxxxxxxx> wrote: > >>Writing to MSRs should not be allowed unless CAP_COMPROMISE_KERNEL is >>set since it could lead to execution of arbitrary code in kernel mode. >> >>Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> >>--- >>This would be used on top of Matthew Garrett's existing "Secure boot >>policy support" patch series. >>--- >> arch/x86/kernel/msr.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >>diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c >>index 4929502..adaab3d 100644 >>--- a/arch/x86/kernel/msr.c >>+++ b/arch/x86/kernel/msr.c >>@@ -103,6 +103,9 @@ static ssize_t msr_write(struct file *file, const >>char __user *buf, >> int err = 0; >> ssize_t bytes = 0; >> >>+ if (!capable(CAP_COMPROMISE_KERNEL)) >>+ return -EPERM; >>+ >> if (count % 8) >> return -EINVAL; /* Invalid chunk size */ >> >>@@ -150,6 +153,10 @@ static long msr_ioctl(struct file *file, unsigned >>int ioc, unsigned long arg) >> err = -EBADF; >> break; >> } >>+ if (!capable(CAP_COMPROMISE_KERNEL)) { >>+ err = -EPERM; >>+ break; >>+ } >> if (copy_from_user(®s, uregs, sizeof regs)) { >> err = -EFAULT; >> break; > > -- > Sent from my mobile phone. Please excuse brevity and lack of formatting. -- Kees Cook Chrome OS Security -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html