The Linux kernel provides a powerful socket API to user applications. Among other functions, sockets provide an universal way for IPC and user-kernel communication. The socket layer uses several logical sub layers. One of the layers, the auxiliary message layer (or scm layer) augments the socket API by a universal user-kernel message passing capability (see recvfrom(2) for more details on auxiliary messages).
One of the scm message parsing functions invoked from the kernel sendmsg() code is __scm_send() and it suffers from a deadlock condition if a carefully prepared auxiliary message is sent to a socket by an unprivileged application.
Note: The kernel 2.4 branch is not further exploitable but on the 2.6.x branch it might be possible to gain elevated privileges.
Proof Of Concept
/*
* Linux kernel 2.4 & 2.6 __scm_send DoS
* Warning! this code will hang your machine
*
* gcc -O2 scmbang.c -o scmbang
*
* Copyright (c) 2004 iSEC Security Research. All Rights Reserved.
*
* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"
* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION
* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.
*
*/