The FPSC-IRCD.txt advisory

From: syg FPSC (ircdat_private)
Date: Sun Mar 07 1999 - 16:20:59 PST

  • Next message: Paul Leach: "Re: More Internet Explorer zone confusion (new issue)"

    ***Note to aleph1, replace this with what i sent you earlier plz, thanks.***
                                The FPSC-IRCD.txt advisory.
                                ---------------------------
                                By: syg of the FPSC @3/7/98
                                    ircdat_private
                                   http://FPSC.hemp.net
    
    Program affected:
    IRCD
    
    Versions affected:
    All hybrid and other EFnet IRCD versions.  Probably others.
    
    Problem:
    	According to the date of this file, thier is a few bugs in hybrid IRCD
    and  maybe  others.  I've checked DALnet's source and it seems thiers is fixed
    and not affected.  The bug is in match.c of the source code and starts on line
    204  at  'tolowertab[]'.  Note  the  line  that  consists  of  the  following:
    "'t', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',".  Then go to line 238
    in match.c to 'touppertab[]'.  Note the line that reads:
    "'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^'," and  look at the two
    lines.  If you notice, it takes the '{' char and defines its uppercase char as
    '['  as  along with defining '|' to '\', '}' to ']', and '~' to '^'. What this
    means   is   thier  the  same  characters  in  channel  names  and  nicknames.
    	Now  what  can  you  do with this in such a way it would be a problem?
    You  can  spy on channels that consist of any one of those 8 characters below:
    1) {     --Defined as LowerCase [
    2) [     --Defined as UpperCase {
    3) }     --Defined as LowerCase ]
    4) ]     --Defined as UpperCase }
    5) |     --Defined as LowerCase \
    6) \     --Defined as UpperCase |
    7) ~     --Defined as LowerCase ^
    8) ^     --Defined as UpperCase ~
    This problem and mIRC make a dangerous combination.  Lets say a bunch of your
    friends  hang  in  #mIRC]  and  you  run BitchX.  All  you have to do is join
    #mIRC}  and  thier mIRC clients wont see you join the channel which means you
    are  a  ghost  and  therefore  are  invisible.  Another  example  would be...
    two  people  are  in #Love^2 and you ran BitchX.  All you would have to do is
    join  #Love~2  and  they  wont  see  you join, therefore you can spy on thier
    conversation  all night long.  Now if one of the mIRC people happened to type
    "/names #mIRC]"  or  "/names #Love^2"  you would magically pop up in the nick
    list  of  the  channel.  That  is  also the same if someone joins the channel
    after you have joined, you will show up in thier names list therefore it will
    put  you in thier nick list in the channel window.  Be creative and have fun.
    
    
    Logs:
    The "->->->" is me telling you whats going on.
    ->->-> In mIRC I typed /join #[ with the nick mIRC-1
     *** Now talking in #[
    ->->-> No one is in the channel but me in the nick list.
    ->->-> Then I looked in my status window and got the join info.
     #[ @mIRC-1
     #[ End of /NAMES list.
     #[ created on Thu Feb 25 14:13:45
    ->->-> Then in another mIRC client I typed /join #{ with the nick mIRC-2
     *** Now talking in #{
    ->->-> No one is in the channel but me in the nick list.
    ->->-> Then I looked in my status window and got the join info.
     #[ mIRC-2 @mIRC-1
     #{ End of /NAMES list.
     #[ +
     #[ created on Thu Feb 25 14:13:45
    ->->-> NOTE: I can't see mIRC-1 in the nick list in the channel.
    ->->-> I also can't see mIRC-2 in mIRC-1's nick list.
    ->->-> So basically it's like two different channels when you are in mIRC.
    ->->-> Let's now bring bitchX into play...
    ->->-> In BitchX under the nick BitchX-1 i typed /join #[
     BitchX-1 [testat_private] has joined #[
     [Users(#[:3)]
     [ BitchX-1  ] [ mIRC-2  ] [@mIRC-1  ]
     Channel #[ was created at Thu Feb 25 14:13:45 1999
     BitchX: Join to #[ was synced in 0.391 secs!
    ->->-> Now under mIRC-1's client I saw...
     *** BitchX-1 (testat_private) has joined #[
    ->->-> Which I should have because we are both in #[
    ->->-> But on the other hand, under mIRC-2's client( The one in #{ )...
    ->->-> I didn't see BitchX-1 join.
    ->->-> And as you can see, BitchX-1 see's mIRC-2 in the channel #[
    ->->-> Now let me type with all three of them.
    ->->-> Under all three clients I will type thier nick and chan to the channel.
    ->->-> Under BitchX-1's client I saw all three clients talk...
     <mIRC-1> mIRC-1 #[
     <mIRC-2> mIRC-2 #{
     <BitchX-1> BitchX-1 #[
    ->->-> Under mIRC-1's client I saw myself and BitchX-1 type (We are both
    in #[)
     <mIRC-1> mIRC-1 #[
     <BitchX-1> BitchX-1 #[
    ->->-> Under mIRC-2's client I saw myself type only ( Im in #{ )
     <mIRC-2> mIRC-2 #{
    ->->-> As you can see mIRC-2 is being spy'd on by the BitchX client.
    ->->-> End of logs.
    
    Sollution:
    	The fix would be to simply edit /src/match.c of the source code. DALnet
    seems  to  have  a  nice  match.c at ftp.dal.net in df467.tgz if you EFnet staff
    need  any  ideas.  We all hope to see this fixed in your next release of hybrid.
    
    Final Notes:
    	IRCD coders and staff members of all networks and all IRCD versions need
    to  check  your source for this bug and fix it before it gets abused... maybe it
    was  you  in  #^locals^ giving your phone number out to a friend which was being
    spy'd  on  by  another  local enemy.  Other than that, everyone keep up the good
    work  and so  long.  Also,  thanks  to  sate  for  helping  me  test  this out.
    Questions/jobs/info/etc: ircdat_private  -syg
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 14:38:22 PDT