Description of problem: On x86-64, a 32-bit process (TIF_IA32) can switch to 64-bit mode with ljmp, and then use the "syscall" instruction to make a 64-bit system call. A 64-bit process make a 32-bit system call with int $0x80. In both these cases, audit_syscall_entry() will use the wrong system call number table and the wrong system call argument registers. This could be used to circumvent a syscall audit configuration that filters based on the syscall numbers or argument details. References: http://scary.beasts.org/security/CESA-2009-001.html http://scary.beasts.org/security/CESA-2009-004.html https://bugzilla.redhat.com/show_bug.cgi?id=487255 http://lkml.org/lkml/2009/2/27/451 summary http://lkml.org/lkml/2009/2/27/452 syscall-audit
Created attachment 333681 [details] RHEL5 patch for audit case (vs kernel-2.6.18-132.el5)
CVSS2 score of low, 3.6 (AV:L/AC:L/Au:N/C:P/I:P/A:N)
Upstream patch: http://git.kernel.org/linus/ccbe495caa5e604b04d5a31d7459a6f6a76a756c
This issue has been addressed in following products: MRG for RHEL-5 Via RHSA-2009:0451 https://rhn.redhat.com/errata/RHSA-2009-0451.html
This issue has been addressed in following products: Red Hat Enterprise Linux 4 Via RHSA-2009:0459 https://rhn.redhat.com/errata/RHSA-2009-0459.html
This issue has been addressed in following products: Red Hat Enterprise Linux 5 Via RHSA-2009:0473 https://rhn.redhat.com/errata/RHSA-2009-0473.html
This issue has been addressed in following products: Red Hat Enterprise Linux 5.2 Z Stream Via RHSA-2010:0079 https://rhn.redhat.com/errata/RHSA-2010-0079.html