[PATCH] capabilities: fix undefined behavior in bit shift for CAP_TO_MASK

Serge E. Hallyn serge at hallyn.com
Thu Nov 3 13:24:34 UTC 2022


On Thu, Nov 03, 2022 at 07:57:45AM -0400, Paul Moore wrote:
> On Tue, Nov 1, 2022 at 12:30 AM Serge E. Hallyn <serge at hallyn.com> wrote:
> > On Mon, Oct 31, 2022 at 07:18:54AM -0700, Andrew G. Morgan wrote:
> > > Acked-by: Andrew G. Morgan <morgan at kernel.org>
> > >
> > >
> > > On Mon, Oct 31, 2022 at 4:25 AM Gaosheng Cui <cuigaosheng1 at huawei.com> wrote:
> > > >
> > > > Shifting signed 32-bit value by 31 bits is undefined, so changing
> > > > significant bit to unsigned. The UBSAN warning calltrace like below:
> > > >
> > > > UBSAN: shift-out-of-bounds in security/commoncap.c:1252:2
> > > > left shift of 1 by 31 places cannot be represented in type 'int'
> > > > Call Trace:
> > > >  <TASK>
> > > >  dump_stack_lvl+0x7d/0xa5
> > > >  dump_stack+0x15/0x1b
> > > >  ubsan_epilogue+0xe/0x4e
> > > >  __ubsan_handle_shift_out_of_bounds+0x1e7/0x20c
> > > >  cap_task_prctl+0x561/0x6f0
> > > >  security_task_prctl+0x5a/0xb0
> > > >  __x64_sys_prctl+0x61/0x8f0
> > > >  do_syscall_64+0x58/0x80
> > > >  entry_SYSCALL_64_after_hwframe+0x63/0xcd
> > > >  </TASK>
> > > >
> > > > Fixes: e338d263a76a ("Add 64-bit capability support to the kernel")
> > > > Signed-off-by: Gaosheng Cui <cuigaosheng1 at huawei.com>
> >
> > Reviewed-by: Serge Hallyn <serge at hallyn.com>
> >
> > Paul, do you mind including this in your lsm tree?
> 
> Sure, although just a warning that it might not happen until next
> week.  Maybe I'll get some time this weekend but I can't be certain.

Ok, thanks.

I wouldn't mind putting up a capability tree if number of patches were
going to start ramping up, but historically that has not been worth it.



More information about the Linux-security-module-archive mailing list