I slept through the opench.aix.uy drama, but the synopsis of this — and someone can correct me if I miss anything — is that ai-eks used their Clubhouse user token and had a bot join every room, collect the Agora tokens, and plug them into a browser client.
This technical breakdown shows how Clubhouse works. It's a scrappy startup, & there are 3 legs. Clubhouse has their own API for user management. It relies on Agora for RTC audio streams. And less spoken is that the room interactions flow over PubNub events theori.io/research/korea…
Unless I missed something, Clubhouse conversations weren't being recorded by the opench.aix.uy experiments. But, the metadata was indeed being scraped & relayed over the flask service. That's of course a cause for concern for the intimate, ephemeral network.
The nuts & bolts of how someone could build a service like this points at two weaknesses. First, Agora tokens. They're magic keys that unlock a 'call.' They shouldn't be able to be shared. But they can be. A combination of a bad architecture (Agora) and implementation (Clubhouse)
When a user joins a channel, they're getting what is essentially a long-lived token that can then be shared. Ai-eks' service crawls & joins every room, grabs the token, then just passes it around to be used on the client-side N number of times to connect to Agora.
That brings us to the second problem. Agora and Clubhouse don't always maintain the same state. When a user joins a room — aka channel — they receive a token, and unless that token is invalidated (by time or Clubhouse's API), then they can maintain a connection to Agora.
This essentially means that anyone with an active token — depending on how robust the implementation — can become a ghost listener. Their Clubhouse state would change, but their Agora state would not, and they could continue to listen as a ghost.
The chaotic few days of this experiment was a result of these weaknesses, turning what is essentially a phone call into a livestream using the quirks of the Clubhouse/Agora architecture. It didn't change the state of Clubhouse; but rather played out on the Agora side.
Clubhouse can fix a lot of these issues with better token management. It was always a hard problem, but they added another layer of complexity — these RTC products were designed for trustful calls & data streams, and Clubhouse threw a wrench in how they were designed to work.
Clubhouse can also be more aggressive on their half of state, preventing individual users like ai-eks from joining every room. In fact, they already did. But that's a bare minimum; this is an arms race, and the nefarious actors will get better with sophisticated botnets.
This isn't the only experiment playing out right now. Others are building their own private clients (lacking the centralized token swapping). It's a neat race playing out on GitHub, and it is healthy & fun.
These events are a wake up call. Clubhouse responded by swiftly blocking the first user. It was the right decision. But, the code is out there, and anyone can do this now. This isn't a private call: this is a public social network. Clubhouse will fight that distinction forever.
I started sniffing Clubhouse traffic & learning about it two weeks ago when the Chinese government banned the app. At that point, @zhuowei had already released the OpenAPI spec and the hackers were off to the races github.com/zhuowei/Clubho…
What I was curious about was whether Clubhouse's Achilles heal would actually make it more censorship resistant. Specifically, the GFW targeted the Clubhouse API, but *did not* target Agora, which has a number of Chinese customers. That still stands.
We saw my little theory became true this weekend. The experiment subverted the domain that was banned — the central Clubhouse API — thus evading the firewall. Prior to Clubhouse pulling the token, Chinese users could listen to Clubhouse again through the service.
What I want to see after this successful experiment is for Clubhouse to natively support their own proxy like Signal. This would allow users from behind the Great Firewall to continue to communicate over Clubhouse.
Clubhouse would face challenges in acknowledging & supporting censorship resistance (namely putting Agora in a position to retaliate at the behest of the Chinese government), which is why I hope this growing body of Clubhouse hackers continue to push forward w/ a quiet nod.

• • •

Missing some Tweet in this thread? You can try to force a refresh

Keep Current with Daniel Sinclair

Daniel Sinclair Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!


Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @_DanielSinclair

5 Jan
I expected a show, but it looks like we won’t even get that. The cover-up continues.
I wonder how much this AP report has played into Beijing’s decision to renege on the WHO investigation agreement. apnews.com/article/united…
"The lines of communication have broken down.” wsj.com/articles/world…
Read 5 tweets
5 Jan
Uh oh: “The most important site is E484, where neutralization by some sera is reduced >10-fold by several mutations, including one in emerging viral lineages in South Africa and Brazil.”
The South African variant has both E484K and N501Y, so the concerns from the last few weeks are more justified now. What will the combination of the higher viral loads associated with N501Y — if that holds — mean when neutralization dips because of E484K escape? Not liking this.
We’re already seeing that experiment play out in South Africa. We’ll know more about vaccine efficacy soon, but I imagine the first immune escape alarm would be a rise in re-infections among those exposed to prior lineages. We shouldn’t wait around for that data...
Read 5 tweets
4 Jan
The underlying tone of this is irresponsible. This is not journalism; this is a collection of anecdotes with a preconceived narrative. nymag.com/intelligencer/…
That Quibi screenplay really cherry picks details, like the leaked Hubei CDC reports that suggest the first epidemic may not have occurred in Wuhan after all. The Yichang or Xianning 'influenza' epidemics could have been wrongfully attributed cnn.com/2020/11/30/asi…
At the end of the day, so much of this easily weaponized mystique results directly from the Communist Party's narrative, cover up, and censorship. This is a story about the Chinese system, not about a virology lab and gain functions.
Read 7 tweets
4 Jan
“My concern, as a virologist, is that if you wanted to make a vaccine-resistant strain, what you would do is to build a cohort of partially immunized individuals in the teeth of a highly prevalent viral infection” statnews.com/2021/01/04/bri…
These are certainly not the only perspectives. Many are also arguing that we're already in a massive immune escape experiment, with immune responses waning and new mutations like E484K displaying dominance and mAbs escape potential.
Read 6 tweets
4 Jan
The warning Wuhan never gave us. Why don't we care?
The message that is still not being clearly articulated is that the mitigations that have worked may no longer work under B.1.1.7 and B.1.351. Our mitigations until now have been based on the Wuhan and Lombardy data; now we have no clue what will happen.
We've been like "well, we know that works, & we'd do it if only it was easier"

Now we're at "what the hell is going to happen here" with London looking like this despite lockdowns 📈
Read 8 tweets

Did Thread Reader help you today?

Support us! We are indie developers!

This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!