PROBLEM: Adaptec AAC Raid out-of-bounds array index in query_disk()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Our UC-KLEE tool discovered an unchecked user-supplied array index bug/vulnerability in the Adaptec AAC series RAID driver. This bug may allow a user to trigger a kernel segfault or leak private kernel data. Our tool found the bug in kernel 3.16.3, but it appears to date back to at least 2.6.12.

The bug occurs in the query_disk() ioctl code (drivers/scsi/aacraid/aachba.c), which retrieves an aac_query_disk struct via copy_from_user(). The offending code is as follows:

2564:    struct aac_query_disk qd;
 ...
2570:    if (copy_from_user(&qd, arg, sizeof (struct aac_query_disk)))
2571:            return -EFAULT;
2572:    if (qd.cnum == -1) <----- BRANCH TAKEN
2573:            qd.cnum = qd.id;
 ...
2585:    qd.valid = fsa_dev_ptr[qd.cnum].valid != 0; <----- UNSAFE DEREFERENCE
2586:    qd.locked = fsa_dev_ptr[qd.cnum].locked;
2587:    qd.deleted = fsa_dev_ptr[qd.cnum].deleted;
 ...
2594:  strlcpy(qd.name, fsa_dev_ptr[qd.cnum].devname,
2595:    min(sizeof(qd.name), sizeof(fsa_dev_ptr[qd.cnum].devname) + 1));
2596:
2597:  if (copy_to_user(arg, &qd, sizeof (struct aac_query_disk)))

If the branch on line 2572 is taken (qd.cnum == -1), then qd.id is used (unchecked) as an array index on lines 2585...2595. Any of these lines may trigger a segfault or leak private kernel data back to the user on line 2597.

Please let me know if you have any questions about this bug. Thanks,
-David


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux