-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Destiny app should identify itself as destiny #193
Comments
@ewanas as we use flutter and dart plugin, how the best this should be implemented? |
Ideally we wouldn't leak the exact version either. |
Not sure if I understood you. We should not send release/tag version to AgentVersion? Or you meant something else? |
Yes, I mean that. Knowing the precise version is often valuable when applying network exploits. That advise is pretty common for servers, at least. Perhaps it's somewhat less relevant for clients, but ... |
Seems that you are referring to that it is a bad idea when a webserver advertises it's exact version. The issue here is about introducing the analogous of a UserAgent header (which is well established in the Web-Space). |
@meejah has a point about avoiding to be too specific in general. It is obviously a bad idea to leak the product and version of a server that is publicly available. So, what are the risk in the case of Destiny? Thus, yep, possibly harmful and more likely in the future I guess! Right? Extract from the spec:
The reason why we want to identify the destiny product from other (Winden) clients is well known (and still debated).
I guess the decision will be discuss elsewhere, in the event we choose to define an AgentString following the spec, we might consider something like:
Which is useful... but come at some price. |
I think the most-granular that has direct benefit to us is any major version that has different network behavior. For example, if a newer version implemented an as-yet-unimplemented piece of the network protocol. For example, as deployed it does not currently support re-connecting to the mailbox. So leaking the major version where that starts might be useful. For example, let's just say it was in 1.x.y where it continues to not reconnect, but 2.a.b is where it started: we could include "1" or "2" in the network-advertised version. Note too that the default mailbox uses ("Attack surface" I think is the term @btlogy is looking for..?) |
We are talking about a client application here. This is the same like the well known User Agent header. By adding this we even see if users use outdated clients which might be affected by known security issues and can notify them in case. We will be quite limited by the format, as the
Those implementation fields are typical: And for versions we have values like: And the feature in general is already in use. This issue is not about adding this information. |
@meejah , can you give more details on that line? |
Re: the default relay, anything in the network path can read unencrypted websocket traffic (i.e. the exact version headers). So many more devices than "the sever" can see your precise version in that case. Or, what details do you want? I understand that web browsers like to leak their exact version, but that has also caused a bunch of problems (both security related and non-security). Ben and I are just trying to inform about best-practices here, which these days lean away from including precise version information (because it can help attackers). |
It's also p2p. |
Two misconceptions here:
The existing magic wormhole clients already set implementation and version fields. If we think that this is a problem we should open tickets to discuss this with the community of the corresponding projects. |
The implementation and version information are used only on the side of the mailbox protocol, which is not P2P. The relay part which can be P2P does not transmit version information. |
Adding "why" not to be closed again:
As we touched security perspective, if we know, that specific version is vulnerable, we could theoretically block usage on our mailbox server (yet, we don't have such functionality, but adding if should not be something hard on critical situation). If there is vulnerable application version, even without knowing exact version, attacker can blindly try exploit. In this particular case, attacker should be mailbox or relay server imposter. Again, preventing usage of such version, will most likely force users to update. We were already identifying, just we are switching from wormhole-william version to destiny or winden versioning. Also last security audit didn't detect this as an issue. However we can consult with our security experts to have more opinions. |
Thank you all for sharing. This issue also reminds me that I need to better understand how MW works before weighting on such arguments... Ex: destiny-android/1.0 Even letting the security perspective aside, this could also reduce the chance of identification? |
Learning is part of discussion. We can drop patch version, if it helps feel safer. On statistic side we will have more aggregated usage, which can be sufficient. |
Unfortunately I already clicked the message box away, but trying to send for the first time on my Windows 11 laptop gave me, as it should, a big "Do you want to allow this network access..." dialogue by the Windows firewall, and I clicked (I am paraphrasing)
Would be a much more professional look if someone would take 30 mins to update all the strings. I am running version 1.0.0 according to the Settings dialogue, so I downloaded (from here) and tried to update, but the installer tells me I already am running the latest version: |
Thanks @hacklschorsch for reporting this. Can you create a separate ticket for that issue. The original issue is about how the apps should advertise details to the server, comparable to a user-agent header. |
Destiny app should identify itself as destiny, when connecting to Magic Wormhole mailbox server.
Currently it identify as:
Propose to identify as:
or if possible, be more specific and identify app platform like:
Identification is used in wormhole-william library version/version.go file
The text was updated successfully, but these errors were encountered: