View Issue Details

IDProjectCategoryView StatusLast Update
0000150Kolibri OS (trunk)Applicationspublic2024-02-23 21:17
Reporterfloppy121 Assigned Tohidnplayr  
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
PlatformAny x86 / Любой x86OSKolibriOSOS VersionSVN autobuilds
Summary0000150: IRCC doesn't support "ping-cookie" and fails connecting to any servers using them
DescriptionAfter my InspIRCd server used for the last issue (http://bugs.kolibrios.org/view.php?id=149)
got broken (no clean installs helped) - this time I got UnrealIRCd 5.2.3 for Windows 7 from
https://www.unrealircd.org/download/5.2 , and used an almost-default config with as few changes as possible.

HexChat connects successfully to this UnrealIRCd server. However, IRCC fails with a "PING-PONG" error:

[Timestamp] * Connecting to XXX.XXX.XXX.XXX
[Timestamp] -servername- *** Looking up your hostname...
[Timestamp] -servername- *** Found your hostname (cached)
[Timestamp] -servername- ERROR: Invalid PING response. Your client
 must respond back with PONG :<cookie>

This reply message is from UnrealIRCd source code - pingpong.c (lines 100+) :
https://github.com/unrealircd/unrealircd/blob/unreal52/src/modules/pingpong.c

Then I found this server-side setting of UnrealIRCd:
https://www.unrealircd.org/docs/Set_block#set::ping-cookie

=====
set::ping-cookie

Syntax: set::ping-cookie <yes|no>

When a client connects, send a "ping cookie" consisting of a random string that the client should respond with. All clients should cope with this and do so without bothering the user. Ping cookies are a security measure. It helps in preventing blind HTTP-POST attacks and similar security issues. It also helps against TCP spoofing on very old operating systems.

The default is yes (enabled). Changing this to no is a big security risk.
=====

If I go to my almost-default unrealircd.conf , find the "/* Network configuration */
set {" code block (lines 420+) and add a

ping-cookie "no";

line to it, as following:

=====
...
set {
...
prefix-quit "Quit";
ping-cookie "no";

/* Cloak keys ...
=====

then IRCC can connect to this server successfully. Unfortunately, this is a server-side setting,
which means that IRCC can't connect to many IRC servers with this ping-cookie stuff enabled.

Looking at replies here - https://forums.unrealircd.org/viewtopic.php?t=2098#top ,
it seems that IRCC should reply to a server message like "PING :B0156928" with "PONG :B0156928".
Also:

"Note that, again because of the IRC protocol, you MUST pong back to any subsequent ping requests that may happen (eg: because of idle time), as outlined in RFC1459 section 4.6.2."
TagsNo tags attached.
SVN revision / ревизия SVNr9671
Type of distribution / Тип дистрибутиваimg / образ дискеты

Activities

floppy121

2022-01-30 08:25

developer   ~0000234

Although cmd_ping is implemented at serverparser.inc , it does not work with UnrealIRCd for some reason. http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fprograms%2Fnetwork%2Fircc%2Fserverparser.inc

hidnplayr

2022-01-30 08:55

developer   ~0000235

Please provide example of actual PING request and (if present) erroneous PONG reply from IRCc.
It can be captured with wireshark for example.

floppy121

2022-01-31 19:25

developer   ~0000237

Here's a relevant extracted data from Wireshark (MAC addresses replaced by XX's - client, YY's - server) :

1) PING request by UnrealIRCd server:

Internet Relay Chat
    Response: PING :3D038D38
        Command: PING
        Trailer: 3D038D38

0000 XX XX XX XX XX XX YY YY YY YY YY YY 08 00 45 00 ============..E.
0010 00 44 9b 74 40 00 40 06 8a e9 0a 2a 00 01 0a 2a .D.t@.@....*...*
0020 00 02 1a 0b e5 71 60 09 e5 b9 ca 40 ed cb 80 18 .....q`....@....
0030 01 fe 14 8d 00 00 01 01 08 0a b9 dc dd 2e cd 4b ...............K
0040 0b 00 50 49 4e 47 20 3a 33 44 30 33 38 44 33 38 ..PING :3D038D38
0050 0d 0a ..

2) PONG reply by IRCC client - for some reason it's not complete:

Internet Relay Chat
    Request: PONG :3D0
        Command: PONG
        Trailer: 3D0

0000 YY YY YY YY YY YY XX XX XX XX XX XX 08 00 45 00 ============..E.
0010 00 33 00 00 00 00 80 06 26 6f 0a 2a 00 02 0a 2a .3......&o.*...*
0020 00 01 e5 71 1a 0b ca 40 ed cb 60 09 e5 c9 50 10 ...q...@..`...P.
0030 80 00 ee f6 00 00 50 4f 4e 47 20 3a 33 44 30 0a ......PONG :3D0.
0040 0d .

hidnplayr

2024-02-23 21:17

developer   ~0000252

Fixed in #9979

Issue History

Date Modified Username Field Change
2022-01-27 09:59 floppy121 New Issue
2022-01-28 14:52 floppy121 Assigned To => hidnplayr
2022-01-28 14:52 floppy121 Status new => assigned
2022-01-30 08:25 floppy121 Note Added: 0000234
2022-01-30 08:55 hidnplayr Note Added: 0000235
2022-01-31 19:25 floppy121 Note Added: 0000237
2024-02-23 21:17 hidnplayr Status assigned => resolved
2024-02-23 21:17 hidnplayr Resolution open => fixed
2024-02-23 21:17 hidnplayr Note Added: 0000252