[apparmor] [PATCH V2] security/apparmor: fix matching on presence of extended attributes
Eric Chiang
ericchiang at google.com
Fri Dec 21 19:25:29 UTC 2018
Hey Seth,
The proposed userland parser changes explicitly won't pass a
zero-sized array. However, modifying the parser to pass zero-sized
arrays causes kcalloc(0) to return ZERO_SIZE_PTR and the policy still
works as if the array hadn't been passed at all.
Note that other uses of unpack_array don't check for size == 0. If I'm
missing an issue here (which is totally possible), we need to add
checks to those calls too:
$ ag -r -A5 '= unpack_array' security/apparmor/
security/apparmor/policy_unpack.c
455: size = unpack_array(e, NULL);
456- /* currently 4 exec bits and entries 0-3 are reserved iupcx */
457- if (size > 16 - 4)
458- goto fail;
459- profile->file.trans.table = kcalloc(size, sizeof(char *),
460- GFP_KERNEL);
--
523: size = unpack_array(e, NULL);
524- profile->xattr_count = size;
525- profile->xattrs = kcalloc(size, sizeof(char *), GFP_KERNEL);
526- if (!profile->xattrs)
527- goto fail;
528- for (i = 0; i < size; i++) {
--
551: size = unpack_array(e, NULL);
552-
553- profile->secmark = kcalloc(size, sizeof(struct aa_secmark),
554- GFP_KERNEL);
555- if (!profile->secmark)
556- goto fail;
--
600: size = unpack_array(e, NULL);
601- if (size > RLIM_NLIMITS)
602- goto fail;
603- for (i = 0; i < size; i++) {
604- u64 tmp2 = 0;
605- int a = aa_map_resource(i);
On Thu, Dec 20, 2018 at 8:30 PM Seth Arnold <seth.arnold at canonical.com> wrote:
>
> On Thu, Dec 20, 2018 at 01:28:38PM -0800, Eric Chiang wrote:
> > --- a/security/apparmor/policy_unpack.c
> > +++ b/security/apparmor/policy_unpack.c
> > @@ -535,6 +535,24 @@ static bool unpack_xattrs(struct aa_ext *e, struct aa_profile *profile)
> > goto fail;
> > }
> >
> > + if (unpack_nameX(e, AA_STRUCT, "xattr_keys")) {
> > + int i, size;
> > +
> > + size = unpack_array(e, NULL);
> > + profile->xattr_keys_count = size;
> > + profile->xattr_keys = kcalloc(size, sizeof(char *), GFP_KERNEL);
>
> Do we need to worry about a zero-size array here?
>
> Thanks
> --
> AppArmor mailing list
> AppArmor at lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
More information about the AppArmor
mailing list