Hi all, we have yet another release today — that’s 5.0.2 on the Play Store (Android) and 5.3.1 on the App Store (iOS)…
Primarily there are 2 updates in this release:
- A vulnerability fix. (More below.)
- A stability fix for v1 non-meshing goTennas on very, very old firmware. (Doesn’t likely apply to most anyone here on Mesh Community.)
Enjoy & thanks!
===============================
goTenna Vulnerability Description
Due to how the goTenna Messaging Protocol is setup, it is possible for a malicious individual to sniff the goTenna RF or BLE packets and determine the exact GID (goTenna ID) of any individual who is sending messages over goTenna. When you send a message, your individual GID is included with the message in plaintext, this is by design, we need to know who sent the message in-order to decrypt it on the other side.
This however brings up an issue. If someone knows your individual GID, they can then use the Developer SDK we provide to set their GID as an existing user’s GID (there is no way to prevent this in the SDK. We need to allow developer’s to set their own GIDs). This means that someone could essentially pretend to be you on the goTenna network.
Alice - goTenna User
Bob - goTenna User being impersonated
Charlie - Hacker who is pretending to be Bob
- Alice and Bob have been talking to each other using goTenna for a while.
- Charlie sniffs goTenna RF/BLE packets while Bob is transmitting and figures out Bob’s personal GID.
- Charlie uses the goTenna SDK to set his goTenna GID to be the same as Bob’s
- Charlie can now can pretend to be Bob on the goTenna network, sending messages to Alice, while Alice has no clue this is not actually Bob.
Vulnerability Fix
In the situation where Charlie pretends to be Bob, Charlie still has his own private Public/Private Encryption Key pair. When Charlie then talks to Alice for the first time (pretending to be Bob), a new key exchange will need to occur. We now detect when a suspicious key exchange has occurred (Alice already has Bob’s public key, why is Bob handing Alice a new one? Suspicious!) and alert the user that a suspicious key exchange has occurred using an Alert or Push Notification. It is then up to the user to confirm the identity of the person they are talking to.
It is possible in rare cases that this alert will be triggered when there is no real threat, and instead, a legitimate additional key exchange needed to occur. An example of such a situation is below
- Alice on-boards using a random GID or cell phone number
- Bob on-boards using his cell phone number
- Alice and Bob initiate a conversation with one another
- Bob for some reason, needs to uninstall and reinstall the mobile application
- Bob uses the same cell phone number to onboard again
- Bob re-initiates a conversation with Alice
- Alice will get an alert that a potentially suspicious key exchange has occurred.
This same issue could also occur if Bob has the goTenna app on-boarded using the same cell phone number on two different mobile devices, and likes to switch between the two of them. Most normal users should not see these edge cases. There is no way to effectively distinguish between these edge cases occurring, or a legitimate impersonation attack.
If any further questions, @tcolligan and @anon62894636 can answer questions!