Ethereal-dev: Re: [Ethereal-dev] new release?
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Devin Heitmueller <dheitmueller@xxxxxxxxxxx>
Date: Thu, 28 Aug 2003 20:35:02 -0000
On Thu, 2003-08-28 at 15:59, Gerald Combs wrote: > - Some sort of privilege separation between the capture code and display > code I've been giving this considerable thought lately, although haven't written anything formal yet. I basically see two modes of operation for Ethereal -- these are the common ways in which it is used. There may be other ways people use Ethereal, in which case please speak up. 1. To read existing capture files -- requires no special privilege, typically run under the non-privileged user account. A security hole in the display code results in arbitrary execution as the non-privileged user. While this is not as bad as execution as root, it is still not a good thing. 2. To capture files and dissect the output. This typically requires root, which is accomplished one of two ways -- either su to root and run Ethereal, or configure the Ethereal binary as setuid. Either way, the net effect is that Ethereal runs as root. Compromise of the capture code results in execution as root -- definitely a bad thing. Ideally I see two phases: To reduce the amount of code that runs as root To reduce the amount of damage that can be done by malicious code running under the non-privileged user account. The first part is clearly the more critical, especially given that I believe many people, and definitely most people not conscious of security, will run Ethereal as root, and any malformed packet can crash their system or worse. I believe this is consistent with Gerald's vision, given that this requires splitting out the display/dissection code from the capture code. My initial thought regarding how to address this problem is to allow the binary to be run setuid root (determining who can run the binary will be dictated by group membership for a group named ethereal). The program will start setuid root and start two children. The first child will be responsible for operating the capture interface. The second child will be responsible for the display/dissection interface. The two can communicate via unnamed pipes or some other transport. This will create a model where only the capture code itself runs as root, everything else runs as the non-privileged account. Further, only a problem in the capture library itself, or the transport between the two daemons, can result in root compromise. The second phase is more ambitious, because it would require the bulk of the dissection code to not run as either root or the non-privileged user, but rather a third user account that does not have the privilege of the regular user. We could have a user called "ethereal". The setuid root copy of Ethereal starts, forks off the capture subprocess (uid=root), forks off the dissection/display process (uid=ethereal), and forks off the filesystem access process (uid=original user). The filesystem access process is required in order to read captures that the original user has access to, and to be able to save captures back to disk. In this model, a compromise of the display/dissection code results in arbitrary code execution as the "ethereal" user, which effectively has no permissions. We might even be able to chroot the process. Ok, I've rambled enough for one afternoon -- I'm just trying to get a dialog going on this issue, given that Gerald brought it up and I've been thinking about it for a few weeks. -- Devin Heitmueller Senior Software Engineer Netilla Networks Inc.
- Follow-Ups:
- Re: [Ethereal-dev] new release?
- From: Gerald Combs
- Re: [Ethereal-dev] new release?
- References:
- Re: [Ethereal-dev] new release?
- From: Gerald Combs
- Re: [Ethereal-dev] new release?
- Prev by Date: Re: [Ethereal-dev] Multiple highlight bug
- Next by Date: Re: [Ethereal-dev] new release?
- Previous by thread: Re: [Ethereal-dev] new release?
- Next by thread: Re: [Ethereal-dev] new release?
- Index(es):