[IRCServices] /ns ghost exploit
Mark Hetherington
mark at ctcp.net
Fri Mar 15 13:56:00 PST 2002
> This is basically what I was trying to say. In response to the
> comment that GHOST could check the target's
> recognized/identified status
> before killing, suppose the user hasn't identified when they get
> disconnected (maybe their connection dropped just as they
> connected to IRC,
> or maybe they didn't identify for some other reason)?
In any scenario such as this, with a valid ghost where the ghost command no
longer functions, they could use the recover and release commands which
would allow them to use their nick again, the "ghost" would have it's nick
changed and would quit IRC naturally within a few minutes. A nick owner
does not lose the ability to use the nick just because ghost is made a
little more selective. The error message will be altered to direct a user
to use recover and release, thanks.
The logic behind the use of nick status, is that it seems the simplest
method to determine the validity of a ghost. Checking other things such as
the connecting host/IP would have problems should the ghost occur because
of an ISP disconnect or redial. For static IPs it would be perfect.
Checking the access list against the ghost host, does not remove the
potential for abuse since an open access list would mean that the ghost
would always appear to be valid. So a decision was made to only assume that
fully identified nicknames are valid ghosts.
An alternative is to have a ghost system similar to guest nicks, but this
would provide no way to remove verifiable ghosts from IRC prior to their
natural timeout. This may not be a bad thing since it prevents unnecessary
killing but would obviously require much more patching of services to
implement and until services reaches a time when a branch is feasible, it
would not be something worth considering at this time.
> The main point, though, is that if the person in question has
> registered/linked those nicks, then from Services' point of
> view (and mine
> as well) those nicks belong to that person, and they can do
> whatever they
> want with them, including killing new users who try to use
> them.
AIUI GHOST was designed (and is described in the documentation) to remove
ghost sessions, not as a way for users to kill people using their
nicknames.
Using that logic, surely the recover command should ignore the
NSForceNickChange directive as well? Personally, we do not tend to give
users kill power on a server. Given the restrictions we have on it's use by
the administration of the network, it seems wrong to give a user the power
as part of the nickname ownership.
Kill Immediate ON will protect a nickname from being used without ever
removing a person from a server and is in my opinion a far better system.
Kill quick will prevent a nickname being used for more than 20 seconds, and
normal kill for more than 60 seconds. All of these have minimal impact on
the user being "killed" since they merely have their nickname changed so
are able to read the message from services explaining why their nickname
was changed and even seek assistance if they still have problems. If killed
on sight, they do not get that opportunity and see no real reason for being
removed from the network.
>From a nick owner perspective, this protection exists whether or not the
nick owner is on IRC and without any effort on their part. A nick owner has
more than adequate protection of the name and ability to restrict it's use
without the need to kill users.
> As I said
> before, if you have users abusing the command, deal with the users
> individually; denying such people this one particular avenue
> of mischief
> will just push them into another anyway.
Personally I do not think that buttons with Do Not Press on them are a
particularly useful feature nor do I want the ongoing task of dealing with
this as each wave of newbies discover this trick.
I would prefer people to find other avenues of mischief, since this will
lead to a better overall package as each is addressed. Imagine if we avoid
applying OS security fixes assuming that if we do not fix them, at least
people will not look for new ones. The fact is, whether this is fixed or
not, people will continue to look for new avenues of mischief. The lag
services trick to "get around" mlock is one that was discovered by users
years ago or so and is one that still comes up regularly which shows that
discovering one exploit does not prevent the search for others.
I definitely do not want to put people off finding problems like this in
Services, since they are better found and fixed than waiting for a
particularly malicious user to utilise.
We obviously have vastly differing opinions on this matter. I have
suggested how I intend to close this loophole rather than "manage" it as
you suggested and the discussion on list has proved useful in spotting some
potential pitfalls which was my primary aim after you said you would not
consider fixing it. I am disappointed it will not be at least an option in
the main services package, but, since I already have to patch in odd things
anyway, it is just one more for the list.
--
Mark.