Approaches for empty client connected to Servers on Any Genre 1 #2935
Replies: 17 comments 53 replies
-
Had it been a Jamulus client, the lowest impact might have been firewall rules on the Directories - no impact on the code. If it's not using the protocol, though, that wouldn't help. However, it seems to have used the server list at some point (else it wouldn't have the servers and, particularly, those "permanent" servers). |
Beta Was this translation helpful? Give feedback.
-
I think we can reject non-well-formed Opus packets. Here is a sample of a packet that was sent to my server (41 bytes):
In contrast, here’s a valid Opus packet that was sent when connecting (330 bytes):
After a while Jamulus negotiates the support for sequence numbers, the data that got sent is 2 bytes larger (332 bytes):
We have a list of allowed sizes here: Lines 86 to 103 in 1f18d6c When Jamulus decodes an audio packet, it must be a multiple of the block size Lines 138 to 142 in dbd34cd So a valid Jamulus audio packets should be a multiply of one of these numbers: [12, 13, 22, 23, 24, 25, 26, 35, 36, 37, 45, 46, 47, 48, 71, 72, 73, 74, 82, 83, 165, 166]. From above example:
|
Beta Was this translation helpful? Give feedback.
-
The problem with code changes on the server is we have servers still running 3.4.2 to consider. We need a solution that will resolve things for them, as well - i.e. for those server operators not upgrading. |
Beta Was this translation helpful? Give feedback.
-
Is there any evidence that "Any genre 1" is the common denominator? Could that effect happen by accident? Maybe because several servers share a common IP range (haven't checked, just guessing)? IMO it's quite unlikely that someone uses Jamulus-specific methods (directory servers, Explorer web scraping) only to access those addresses later in a non-Jamulus way ("not a real client, just garbage"). I think it's much more likely that this is some kind of UDP scanning which happens to disturb Jamulus servers in the observed way. |
Beta Was this translation helpful? Give feedback.
-
A server older than 3.5.6 includes the IP address of each client in the list it returns when asked. Very old versions of Jamulus Explorer would display that IP address, but I removed that when privacy concerns were raised. That was also the reason why servers from 3.5.6 onwards do not even include that information in the list. I've just run up a test version of Explorer to restore the ability to display client IPs, and I can see there are several older servers telling me the same IP of this dubious connection. It is in the range 93.95.250.x, in the Netherlands, owned by Ivengi Benelux aka eurofiber.com. Maybe it would be worth filing an enquiry with [email protected]? |
Beta Was this translation helpful? Give feedback.
-
Is it, https://jamulus.live/ ? |
Beta Was this translation helpful? Give feedback.
-
I read #2941 about about a client that simultaneously connects to an excessive number of servers. Maybe the Directory Server can refuse to cooperate with a client that does this, thus limiting the connections. |
Beta Was this translation helpful? Give feedback.
-
Just as update: The team received a message from Eurofiber saying that their customer has been contacted. |
Beta Was this translation helpful? Give feedback.
-
I notice some servers "naturally" purge the stuck connection, while others don't. Or maybe the rogue client doesn't disconnect in those cases. The long-lived zombie connections don't seem to favor older server versions. Does a sequence of events or operator actions cause these stuck connections to naturally disappear? |
Beta Was this translation helpful? Give feedback.
-
I figured the silence on this matter was because someone was working on it; I guess nobody cares. |
Beta Was this translation helpful? Give feedback.
-
I would appreciate some solution. Category 1 has been useless for about 2 months. I've started to use https://jamulus.live/ exclusively. |
Beta Was this translation helpful? Give feedback.
-
Yes! finally no more empty clients. |
Beta Was this translation helpful? Give feedback.
-
Glad it got fixed. Disappointing it took so long. I think it affected usage. |
Beta Was this translation helpful? Give feedback.
-
What if it happens again? What if this is used maliciously? Can we defend against such an attack? |
Beta Was this translation helpful? Give feedback.
-
There's a tendency to overreach after a DDOS attack. Fix the one bug. Don't allow non Jamulus clients to sent udp steams. And disable blank names. That last one is an easy fix that would have stopped it day 1. |
Beta Was this translation helpful? Give feedback.
-
@dtinth @DavidSavinkoff @pljones could we agree to drop invalid packages as a part time fix or are there any other valid options to ensure that new servers have at least some protection? |
Beta Was this translation helpful? Give feedback.
-
I have another suggestion for a fix. Problems with checking for valid audio packet is that we need to know 2 things in order to successfully decode a packet: (1) which decoder to use and (2) whether sequence numbers are used. These information is sent out-of-band and not in Opus audio packet, so we need to know their So here’s a new proposal: Upon server receiving a packet from an unknown source, put them in a waiting room (do not assign a channel ID yet, dropping all audio packets in the meantime) and send it |
Beta Was this translation helpful? Give feedback.
-
Quite a few Any Genre 1 Servers have an empty client connected without visible use. This has been observed for multiple days and is somewhat worrying. Investigations by @dtinth have shown that this might not even be a Jamulus client.
Although it doesn’t seem to cause any visible harm, it doesn’t seem right to leave it like that. We should try to get to know more about the reasons and implications of this.
If anyone knows more or has any any quick fix approaches besides Server side IP blocking, please write here.
Beta Was this translation helpful? Give feedback.
All reactions