RSniff, the packet sniffer for Linux, is susceptible to a denial of service attack.
63e855d919cd019e79d1bb3e8434abfd0ecbdb2f5a5c18f5366896725207f863
#######################################################################
Luigi Auriemma
Application: RSniff (Remote Sniff)
http://www.cse.sc.edu/~madamanc/projects.html
Versions: 1.0
Platforms: Linux
Bug: Denial of Service
Risk: low
Exploitation: remote
Date: 09 Apr 2004
Author: Luigi Auriemma
e-mail: aluigi@altervista.org
web: http://aluigi.altervista.org
#######################################################################
1) Introduction
2) Bug
3) The Code
4) Fix
#######################################################################
===============
1) Introduction
===============
Rsniff is a remote sniffer for Linux written by Rajesh Kumar
Madamanchi.
#######################################################################
======
2) Bug
======
Look the following code in server.c:
153 {
154 printf ("RSniff Server: Authentication failed!\n");
155 continue;
156 }
This operation happens when a client connects to the Rsniff server and
sends a command different than AUTHENTICATE (a 32 bit number equal to
zero) or simply closes the connection without sending data.
The result is the restart of the binding loop, so the socket will be
recreated BUT the old socket will not be closed.
After 1024 connections the server will finish all the available file
descriptors and will not accept new clients.
#######################################################################
===========
3) The Code
===========
http://aluigi.altervista.org/poc/emptyconn.zip
#######################################################################
======
4) Fix
======
Add "close (new_sockfd);" at line 156:
153 {
154 printf ("RSniff Server: Authentication failed!\n");
155 continue;
156 close (new_sockfd); /* PATCH */
157 }
However Rajesh has been contacted and will release a new version soon.
#######################################################################
---
Luigi Auriemma
http://aluigi.altervista.org
APPENDAGE:
> 153 {
> 154 printf ("RSniff Server: Authentication failed!\n");
> 155 continue;
> 156 close (new_sockfd); /* PATCH */
> 157 }
Excuse me but I have made an error here (lines 155 and 156) the close()
naturally must be located before the "continue;":
153 {
154 printf ("RSniff Server: Authentication failed!\n");
155 close (new_sockfd); /* PATCH */
156 continue;
157 }
---
Luigi Auriemma
http://aluigi.altervista.org