Description of problem: There is a denial of service attack possible using the nfsservctl() system call. When it is invoked with an incorrect version number in the arguments, it prints a message and returns an error. Version-Release number of selected component (if applicable): How reproducible: Very reproducible. Steps to Reproduce: 1. Invoke the nfsservctl() system with anything but 0x201 as the version number in the first argument. Actual results: The kernel prints the message, "nfsd: incompatible version in syscall.", and returns an error. Expected results: Just the error return. Additional info:
Created attachment 125474 [details] Proposed patch
The solution is to not print the message. It is only of vague usefulness anyway. Also cleaned up the error handling in the compat version of the nfsservctl() system call. It was attempting to proceed, even if the attempts to copy in the arguments from the user level had failed.
committed in stream U4 build 34.18. A test kernel with this patch is available from http://people.redhat.com/~jbaron/rhel4/ However, there is a *serious* slab corruption issue with this kernel, and thus it should not be released to customers under any circumstances. I'll update this bug when the kernel is stable again.
We've identified the corruption as specfic to x86-64 smp kernel builds 34.16 and 34.17. All other builds are safe for consumption.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2006-0575.html