Solar Designer reported a missing capability check in the z90crypt driver in the Linux kernel. This missing check could allow a local, unprivileged user to bypass intended capability restrictions.
Doesn't affect upstream anymore. We need to fix this in rhel-3/4. @@ -1887,20 +1887,21 @@ z90crypt_unlocked_ioctl(struct file *fil PRINTK("No longer issuing messages about depre" "cated ioctl Z90STAT_PCIXCCCOUNT.\n"); } tempstat = get_status_PCIXCCcount(); if (copy_to_user((int *)arg, &tempstat, sizeof(int)) != 0) ret = -EFAULT; break; case Z90QUIESCE: +/* AUDIT-UL: should check a capability */ if (current->euid != 0) { PRINTK("QUIESCE fails: euid %d\n", current->euid); ret = -EACCES; } else { PRINTK("QUIESCE device from PID %d\n", PID()); quiesce_z90crypt = 1; } break;
[...] 171 * Z90QUIESCE (not recommended) 172 * Quiesce the driver. This is intended to stop all new 173 * requests from being processed. Its use is NOT recommended, 174 * except in circumstances where there is no other way to stop 175 * callers from accessing the driver. Its original use was to 176 * allow the driver to be "drained" of work in preparation for 177 * a system shutdown.
This issue has been addressed in following products: Red Hat Enterprise Linux 4 Via RHSA-2009:1438 https://rhn.redhat.com/errata/RHSA-2009-1438.html